前提・実現したいこと
tableViewでチェックリストを作りました。
didSelectRowAt でチェックマークをつけ、didDeselectRowAtではずしてます。
ボタンを押した時に全てのチェックマークをはずしたいのですが、やり方が分かりません。教えて頂ければ幸いです。
tableViewのdelegateは書いてます。
該当のソースコード
swift
1 @IBOutlet weak var checkListView: UITableView! 2 3func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 4 let cell = tableView.cellForRow(at: indexPath) 5 // checkmarkをいれる 6 cell?.accessoryType = .checkmark 7 selectCell.append(1) 8 print("(selectCell)") 9 } 10 } 11 12 //selectはずれたとき 13 func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) { 14 let cell = tableView.cellForRow(at: indexPath) 15 //checkmarkはずす 16 cell?.accessoryType = .none 17 selectCell.remove(at: 0) 18 19 tableView.deselectRow(at: indexPath, animated: true) 20 } 21 } 22 23 @IBAction func tapToSend(_ sender: AnyObject) { 24 //全選択解除 25 let indexPath = IndexPath() 26 checkListView.deselectRow(at: indexPath, animated: true) 27 reloadInputViews() 28 } 29 30
解決方法
こちらにはのせてなかったのですが、メンバ変数とローカル変数 ともに宣言していたことが原因でした。なにも入っていないメンバ変数を動かそうとしていたので、ローカル変数を消して対応できました。
以下 全選択解除のコードです。
@IBAction func tapToSend(_ sender: AnyObject) { for i in 0..<checkList.count { let indexPath = IndexPath(row: i, section: 0) checkListView.deselectRow(at: indexPath, animated: true) };self.checkListView.reloadData() selectCell.removeAll() //sendBtn無効化 sendBtn.isEnabled = false sendBtn.backgroundColor = UIColor.init(red: 235/255, green: 235/255, blue: 235/255, alpha: 1.0) } }
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/02 01:26 編集