#質問したいこと
swift5です。
セルにチェックを入れると打ち消し線が入るようにしたいです。
今はチェックマークは入れることができますが、打ち消し線がはいりません。
#コード
swift5
1import UIKit 2 3//変数の設置 4var todo = [String]() 5 6class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UITextFieldDelegate { 7 8 9 @IBOutlet weak var maintextField: UITextField! 10 @IBOutlet weak var tableView: UITableView! 11 12 //追加ボタン 13 @IBAction func TodoAddButton(_ sender: Any) { 14 //変数に入力内容を入れる 15 todo.append(maintextField.text!) 16 //追加ボタンを押す→フィールドを空にする 17 maintextField.text = "" 18 //変数の中身をUDに追加 19 UserDefaults.standard.set(todo, forKey: "TodoList") 20 21 print("書き込み成功") 22 23 maintextField.resignFirstResponder() 24 25 self.tableView.reloadData() 26 } 27 28 29 30 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 31 let cell = tableView.cellForRow(at: indexPath) 32 cell?.accessoryType = .checkmark 33 34 35 36 func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) { 37 let cell = tableView.cellForRow(at:indexPath) 38 cell?.accessoryType = .none 39 40 } 41 42 43 //textFieldキーボードしまう 44 func textFieldShouldReturn(_ textField: UITextField) -> Bool { 45 maintextField.resignFirstResponder() 46 return true 47 } 48 49 50 //UITableView,numberOfRowsInSectionの追加(表示するcellの数を決める) 51 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 52 53 54 //表示するcell数 55 return todo.count 56 } 57 //UITableView、cellForRowAtの追加(表示するcellの中身を決める) 58 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 59 //変数を作る 60 let todocell: UITableViewCell = tableView.dequeueReusableCell(withIdentifier: "TodoCell", for: indexPath) 61 //変数の中身を作る 62 todocell.textLabel!.text = todo[indexPath.row] 63 64 //表示する中身 65 return todocell 66 } 67 68 //セルの編集許可 69 func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool 70 { 71 return true 72 } 73 74 //スワイプしたセルを削除 75 func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) { 76 if editingStyle == UITableViewCell.EditingStyle.delete { 77 78 //itemArray.remove(at: indexPath.row) 79 todo.remove(at: indexPath.row) 80 81 // todoが更新されたので保存 82 UserDefaults.standard.set(todo, forKey: "TodoList" ) 83 84 85 tableView.deleteRows(at: [indexPath as IndexPath], with: UITableView.RowAnimation.automatic) 86 } 87 88 } 89 90 91 override func viewDidLoad() { 92 super.viewDidLoad() 93 94 self.maintextField.delegate = self 95 tableView.allowsMultipleSelection = true 96 97 98 99 //追加画面で入力した内容を取得する 100 if let todos = UserDefaults.standard.object(forKey: "TodoList") as? [String] { 101 todo = todos 102 } 103 104 // Do any additional setup after loading the view. 105 } 106 107 108 109 110} 111
#やってみたこと
ググってみましたがいいサイトが見つかりませんでした。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。