#質問したいこと
Todoリストで追加したものをスワイプで消す→前の画面に戻る→もう一度Todoリストの画面に戻る→消したはずのcellが復活している
#コード
swift
1import UIKit 2 3//classの継承を追加 4class ViewController: UIViewController{ 5 6 //テキストフィールドの設定 7 @IBOutlet weak var TodoTextField: UITextField! 8 9 @IBOutlet weak var tableView: UITableView! 10 11 // アイテムの型 12 class Item { 13 var title : String 14 var done: Bool = false 15 16 init(title: String) { 17 self.title = title 18 } 19 } 20 // この配列に作ったアイテムを追加していく 21 var itemArray: [Item] = [] 22 23 var todoKobetsunonakami = [String]() 24 25 //最初からあるコード 26 override func viewDidLoad() { 27 super.viewDidLoad() 28 29 //追加画面で入力した内容を取得する 30 if UserDefaults.standard.object(forKey: "TodoList") != nil { 31 todoKobetsunonakami = UserDefaults.standard.object(forKey: "TodoList") as! [String] 32 } 33 34 35 if let todos = UserDefaults.standard.object(forKey: "TodoList") as? [String] { 36 todoKobetsunonakami = todos 37 } 38 } 39 40 //最初からあるコード 41 override func didReceiveMemoryWarning() { 42 super.didReceiveMemoryWarning() 43 } 44 45 //追加ボタンの設定 46 @IBAction func TodoAddButten(_ sender: Any) { 47 //変数に入力内容を入れる 48 todoKobetsunonakami.append("Todo(todoKobetsunonakami.count)") 49 50 //追加ボタンを押したらフィールドを空にする 51 TodoTextField.text = "" 52 53 //変数の中身をUDに追加 54 UserDefaults.standard.set(todoKobetsunonakami, forKey: "TodoList" ) 55 56 57 tableView.reloadData() 58 } 59} 60 61extension ViewController: UITableViewDelegate, UITableViewDataSource { 62 63 //UITableView、numberOfRowsInSectionの追加(表示するcell数を決める) 64 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 65 //戻り値の設定(表示するcell数) 66 return todoKobetsunonakami.count 67 } 68 69 //UITableView、cellForRowAtの追加(表示するcellの中身を決める) 70 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 71 //変数を作る 72 let TodoCell : UITableViewCell = tableView.dequeueReusableCell(withIdentifier: "TodoCell", for: indexPath) 73 //変数の中身を作る 74 TodoCell.textLabel?.text = todoKobetsunonakami[indexPath.row] 75 //戻り値の設定(表示する中身) 76 return TodoCell 77 } 78 79 //セルの編集許可 80 func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool { 81 return true 82 } 83 84 //スワイプしたセルを削除 85 func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) { 86 if editingStyle == UITableViewCell.EditingStyle.delete { 87 88 //itemArray.remove(at: indexPath.row) 89 todoKobetsunonakami.remove(at: indexPath.row) 90 tableView.deleteRows(at: [indexPath as IndexPath], with: UITableView.RowAnimation.automatic) 91 } 92 } 93}
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。