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

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

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

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

Q&A

1回答

3762閲覧

swift3 選択されたセルのチェックマーク解除

sandalwalk

総合スコア77

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

0グッド

0クリップ

投稿2017/04/11 23:04

swift3, xcode8において、選択されたセルにチェックマークが付き、セルを再度タップすることで、チェックマークを解除するにはどの様にせすれば良いでしょうか。以下の様な方法を試しましたが、チェックマークは付くのですが、解除することができません。チェックマーク解除の方法を教えて下さい。

swift3

1 // セルが選択された際の処理 2 override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 3 4 let cell:UITableViewCell = tableView.cellForRow(at: indexPath)! 5 cell.accessoryType = UITableViewCellAccessoryType.checkmark 6 7 } 8 9 // セルの選択が解除された際の処理 10 11 override func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) { 12 13 let cell:UITableViewCell = tableView.cellForRow(at: indexPath)! 14 cell.accessoryType = UITableViewCellAccessoryType.none 15 16 }

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

チェック状態をデータで持つ必要があります、簡単に記述すると以下の様な感じになると思います。
※ 自分作っているデータ配列のクラスにチェック状態のプロパティを追加してみてください。

swift

1import UIKit 2 3class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { 4 5 @IBOutlet weak var tableView: UITableView! 6 7 override func viewDidLoad() { 8 super.viewDidLoad() 9 10 tableView.estimatedRowHeight = 44 11 tableView.rowHeight = UITableViewAutomaticDimension 12 } 13 14 // Data Array 15 var checkDataArray = [true, true, true] 16 17 // MARK: - TableView Delegate & DataSource 18 19 // Row Count 20 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 21 return checkDataArray.count 22 } 23 24 // Generate Cell 25 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 26 let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath as IndexPath) 27 28 // セルにチェック状態を反映 29 if checkDataArray[indexPath.row] { 30 cell.accessoryType = .checkmark 31 } else { 32 cell.accessoryType = .none 33 } 34 35 return cell 36 } 37 38 // Select Cell 39 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 40 tableView.deselectRow(at: indexPath as IndexPath, animated: true) 41 42 // チェック状態を反転してリロードする 43 checkDataArray[indexPath.row] = !checkDataArray[indexPath.row] 44 tableView.reloadData() 45 } 46}

投稿2017/04/11 23:37

編集2017/04/11 23:42
_Kentarou

総合スコア8490

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問