質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

解決済

[swift 5]cellのチェックマークを維持したい

Kaguya_4869
Kaguya_4869

総合スコア0

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

1回答

0評価

0クリップ

29閲覧

投稿2019/11/19 13:02

#質問したいこと
現在、Todoリストアプリのようなものを作っています。そこで、アプリが終了した後にもチェックマークが維持されるようにしたいです。
#コード

swift5

import UIKit //変数の設置 var todo = [String]() class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UITextFieldDelegate { @IBOutlet weak var maintextField: UITextField! @IBOutlet weak var tableView: UITableView! //追加ボタン @IBAction func TodoAddButton(_ sender: Any) { //変数に入力内容を入れる todo.append(maintextField.text!) //追加ボタンを押す→フィールドを空にする maintextField.text = "" // //変数の中身をUDに追加 UserDefaults.standard.set(todo, forKey: "TodoList") print("書き込み成功") maintextField.resignFirstResponder() } func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { if let cell = tableView.cellForRow(at: indexPath) { cell.accessoryType = .checkmark } } func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) { if let cell = tableView.cellForRow(at: indexPath) { cell.accessoryType = .none } } //textFieldキーボードしまう func textFieldShouldReturn(_ textField: UITextField) -> Bool { maintextField.resignFirstResponder() return true } //UITableView,numberOfRowsInSectionの追加(表示するcellの数を決める) func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { //表示するcell数 return todo.count } //UITableView、cellForRowAtの追加(表示するcellの中身を決める) func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { //変数を作る let todocell: UITableViewCell = tableView.dequeueReusableCell(withIdentifier: "TodoCell", for: indexPath) //変数の中身を作る todocell.textLabel!.text = todo[indexPath.row] // セルの状態を確認しチェック状態を反映する let selectedIndexPaths = tableView.indexPathsForSelectedRows if selectedIndexPaths != nil && (selectedIndexPaths?.contains(indexPath))! { todocell.accessoryType = .checkmark } else { todocell.accessoryType = .none } //表示する中身 return todocell } //セルの編集許可 func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool { return true } //スワイプしたセルを削除 func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) { if editingStyle == UITableViewCell.EditingStyle.delete { //itemArray.remove(at: indexPath.row) todo.remove(at: indexPath.row) // todoが更新されたので保存 UserDefaults.standard.set(todo, forKey: "TodoList" ) tableView.deleteRows(at: [indexPath as IndexPath], with: UITableView.RowAnimation.automatic) } } override func viewDidLoad() { super.viewDidLoad() self.maintextField.delegate = self tableView.allowsMultipleSelection = true // //追加画面で入力した内容を取得する // if UserDefaults.standard.object(forKey: "TodoList") != nil { // todo = UserDefaults.standard.object(forKey: "TodoList") as! [String] // } //追加画面で入力した内容を取得する if let todos = UserDefaults.standard.object(forKey: "TodoList") as? [String] { todo = todos } // Do any additional setup after loading the view. } /* // MARK: - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation override func prepare(for segue: UIStoryboardSegue, sender: Any?) { // Get the new view controller using segue.destination. // Pass the selected object to the new view controller. } */ }

#やってみたこと
色々調べてみたのですが、自分の未熟な知識ですとよく理解ができず、質問させていただいた次第です。
ぜひ、丁寧に教えてくださると助かります。(自分勝手で申し訳ありません。)

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています