前提・実現したいこと
SwiftでTodoリストを作っていて、このサイト(Swiftで簡単なTODOアプリを作ってみよう)を参考にしながら作っているのですが、以下2つの問題が起きています。
発生している問題・エラーメッセージ
① +で追加したTodoがtableViewに表示されずtableViewを引き下げて更新しても出てこず、アプリを再起動(ホームボタン2度押ししてからの上へスワイプ)すると、tableViewに先ほど追加したTodoがある
②右から左にスワイプして削除しようとしても削除しようとするとアプリが固まるか、クラッシュする
該当のソースコード
Swift
1//ViewControllerです 2import UIKit 3 4class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource { 5 @IBOutlet weak var tableView: UITableView! 6 7 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 8 return TodoKobetsunonakami.count 9 } 10 11 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 12 let TodoCell : UITableViewCell = tableView.dequeueReusableCell(withIdentifier : "TodoCell",for: indexPath) 13 14 TodoCell.textLabel!.text = TodoKobetsunonakami[indexPath.row] 15 16 return TodoCell 17 } 18 19 override func viewDidLoad() { 20 super.viewDidLoad() 21 22 if UserDefaults.standard.object(forKey: "TodoList") != nil { 23 TodoKobetsunonakami = UserDefaults.standard.object(forKey: "TodoList") as! [String] 24 } 25 26 27 //引っ張って更新 28 let refreshControl = UIRefreshControl() 29 30 refreshControl.addTarget(self, action: #selector(ViewController.refreshControlValueChanged(sender:)), for: .valueChanged) 31 tableView.addSubview(refreshControl) 32 } 33 34 @objc func refreshControlValueChanged(sender: UIRefreshControl) { 35 DispatchQueue.main.asyncAfter(deadline: .now() + 1, execute: { 36 sender.endRefreshing() 37 }) 38 } 39 40 //スワイプで削除 41 func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) { 42 if editingStyle == .delete { 43 tableView.deleteRows(at: [indexPath], with: .fade) 44 } 45 } 46 47} 48
Swift
1//AddControllerです 2import UIKit 3 4//変数の設置 5var TodoKobetsunonakami = [String]() 6 7class AddController: UIViewController { 8 9 //テキストフィールドの設定 10 @IBOutlet weak var TodoTextField: UITextField! 11 12 //追加ボタンの設定 13 @IBAction func TodoAddButten(_ sender: Any) { 14 //変数に入力内容を入れる 15 TodoKobetsunonakami.append(TodoTextField.text!) 16 //追加ボタンを押したらフィールドを空にする 17 TodoTextField.text = "" 18 //変数の中身をUDに追加 19 UserDefaults.standard.set( TodoKobetsunonakami, forKey: "TodoList" ) 20 } 21 22 //最初からあるコード 23 override func viewDidLoad() { 24 super.viewDidLoad() 25 } 26 27 //最初からあるコード 28 override func didReceiveMemoryWarning() { 29 super.didReceiveMemoryWarning() 30 } 31} 32
補足情報(FW/ツールのバージョンなど)
Swift4
Xcode10
です。御回答よろしくお願い申し上げます????
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/12 14:05
2018/11/13 00:11