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

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

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

TableView(UITableView)とは、リスト形式で表示するコントロールで、ほとんどのアプリに使用されています。画面を「行」に分けて管理し、一般的には各行をタップした際に詳細画面に移動します。

Xcode

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

Swift

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

Q&A

解決済

3回答

7859閲覧

Swift tableviewで選択したcellのチェックマークを維持する方法

kizahashi

総合スコア17

TableView

TableView(UITableView)とは、リスト形式で表示するコントロールで、ほとんどのアプリに使用されています。画面を「行」に分けて管理し、一般的には各行をタップした際に詳細画面に移動します。

Xcode

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

Swift

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

0グッド

1クリップ

投稿2018/04/10 10:49

編集2018/04/11 00:36

前提・実現したいこと

Xcodeにてアプリをつくっており、今は設定画面を作成しております。
以下のコードでtableviewのcellを選択した際にチェックマークを入れることは可能になったのですが
他のViewControllerなどに画面遷移をしてまた戻ってくるとチェックマークが消えてしまいます。
どのようなやり方でチェックマークを維持することができますか?

また特定のセルにチェックマークをつけるにはどうすればいいのでしょうか

tableViewControllerでDynamic Prototypeを使用しており遷移はNavigationContorollerで行なっています。

ご回答よろしくお願いいたします

発生している問題・エラーメッセージ

なし

該当のソースコード

コード

Swift

1 2import UIKit 3 4var selectSetting: String = "" 5 6class SoundSelectTableViewController: UITableViewController { 7 var soundArray = ["alerm1","alerm2","alerm3","alerm4"] 8 override func viewDidLoad() { 9 super.viewDidLoad() 10 tableView.allowsMultipleSelection = false 11 UserDefaults.standard.set(selectSetting, forKey: "selectSettingKey") 12 13 14 // Uncomment the following line to preserve selection between presentations 15 // self.clearsSelectionOnViewWillAppear = false 16 17 // Uncomment the following line to display an Edit button in the navigation bar for this view controller. 18 // self.navigationItem.rightBarButtonItem = self.editButtonItem 19 } 20 21 override func didReceiveMemoryWarning() { 22 super.didReceiveMemoryWarning() 23 // Dispose of any resources that can be recreated. 24 } 25 26 // MARK: - Table view data source 27 28 override func numberOfSections(in tableView: UITableView) -> Int { 29 // #warning Incomplete implementation, return the number of sections 30 return 1 31 } 32 33 override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 34 // #warning Incomplete implementation, return the number of rows 35 return soundArray.count 36 } 37 38 39 override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 40 let cell = tableView.dequeueReusableCell(withIdentifier: "soundSelectCell", for: indexPath) 41 cell.textLabel?.text = soundArray[indexPath.row] 42 // Configure the cell... 43 // cell.accessoryType = .checkmark 44 cell.selectionStyle = UITableViewCellSelectionStyle.none 45 return cell 46 } 47 override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath){ 48 let cell = tableView.cellForRow(at:indexPath) 49 // チェックマークを入れる 50 cell?.accessoryType = .checkmark 51 selectSetting = soundArray[indexPath.row] 52 53 } 54 override func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) { 55 let cell = tableView.cellForRow(at:indexPath) 56 57 // チェックマークを外す 58 cell?.accessoryType = .none 59 } 60 61 /* 62 // Override to support conditional editing of the table view. 63 override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool { 64 // Return false if you do not want the specified item to be editable. 65 return true 66 } 67 */ 68 69 /* 70 // Override to support editing the table view. 71 override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) { 72 if editingStyle == .delete { 73 // Delete the row from the data source 74 tableView.deleteRows(at: [indexPath], with: .fade) 75 } else if editingStyle == .insert { 76 // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view 77 } 78 } 79 */ 80 81 /* 82 // Override to support rearranging the table view. 83 override func tableView(_ tableView: UITableView, moveRowAt fromIndexPath: IndexPath, to: IndexPath) { 84 85 } 86 */ 87 88 /* 89 // Override to support conditional rearranging of the table view. 90 override func tableView(_ tableView: UITableView, canMoveRowAt indexPath: IndexPath) -> Bool { 91 // Return false if you do not want the item to be re-orderable. 92 return true 93 } 94 */ 95 96 /* 97 // MARK: - Navigation 98 99 // In a storyboard-based application, you will often want to do a little preparation before navigation 100 override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 101 // Get the new view controller using segue.destinationViewController. 102 // Pass the selected object to the new view controller. 103 } 104 */

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

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

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

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

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

fuzzball

2018/04/11 00:30

コードは ``` で囲って下さい。
guest

回答3

0

cellは使い回されることを前提に設計して下さい。
cellの実体はデータ数分ではなく、画面表示に必要な分しか生成されず、
スクロールして画面からはみ出したcellは、別の新たに画面に表示されるcellに使い回されます。
tableView.dequeueReusableCell ← resuseable cell: 再使用可能なセル

従って、IndexPathに対応したチェックのOnOffを保持する変数を用意し、
tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath)
の中で、indexPathに対応したチェックのOnOff状態をcellに反映します。

投稿2018/04/10 11:30

dsuzuki

総合スコア1682

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

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

kizahashi

2018/04/11 00:49

ご回答感謝いたします! UITableViewのスクロールではなく、一度他のTableViewControllerやViewControllerに画面遷移をして、また戻ってきた時にチェックマークが外れてしまっているのです。 チェックのOn,Off状態を反映するというのはどうすればできるでしょうか cellForRowAt内でifなどを使うことはできるのですが、特定のセルを選択できない為にチェックマークを一つのセルのみにつけるというようなことができません
dsuzuki

2018/04/11 03:24

cellに対してチェックのOnOff変更ができないということでしょうか。 "soundSelectCell"で定義されているcellクラスにチェックOnOffを表示するためのUIViewが追加されていると思います。 UITableViewCellを継承し、チェックのOnOffを変更するためのfunc、もしくはチェックのOnOffを表示するUIViewをプロパティとして持つクラスを自作します。 storyboardか、xibを使用しているなら、"soundSelectCell"のcustom classに自作のクラスを設定。 tableView.dequeueReusableCellで生成したcellを as XXX (XXXは"soundSelectCell"のクラス名)で UITableViewCellから自作クラスに変更してください。 そのcellに対して、チェックのOnOff変更操作をしてください。
kizahashi

2018/04/12 04:39

返信ありがとうございます。 プロトタイプセルの中に配列が.rowになって入っていますがその配列の中の一つの要素のみのセルにチェックマークをつけるということです。 cellに対してOnOff変更操作のやり方のがわかりません 初心者なので変なこと言ってると思いますが tableView. soundSelectCell.cell[3]みたいな感じでcellを指定できればそれが一番いいのですが、この書き方では指定できません 特定のcellだけを指定する方法が知りたいです。
dsuzuki

2018/04/12 08:26

> cellに対してOnOff変更操作のやり方のがわかりません tableView.dequeueReusableCell で生成されるcellは、UITableViewCellクラスであり、cell内に独自に追加したUIViewへの操作用funcやプロパティはありません。 そこで、UITableViewCellを継承した、独自のセル(以後、CustomCell)を実装します。 CustomCellに、チェックボックスを操作するためのfunc(IBAction func change(_ sender: Any)とか)もしくは、チェックボックスのプロパティ(IBOutlet checkBox: UIImageとか)を設定します。 storyboard上のプロトタイプセルのCustom Classに上記のCustomCellを設定します。 上記のfuncやプロパティとstoryboard上のUIViewとリンクを張ります。 tableView.dequeueReusableCell で生成されるcellは、UITableViewCellクラスですが、上記によりCustomCellへの変換ができます。(let customCell = tableView.dequeueReusableCell(..略..) as CustomCell) あとは let customCellのfuncもしくはプロパティを操作します。 > tableView. soundSelectCell.cell[3]みたいな感じでcellを指定できれば var soundArrayと同様に、cell用の配列(var cellArray: [CustomCell]とか)を用意します。 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath)において、 tableView.dequeueReusableCell を使わずに、cellを生成します(let customCell = CustomCell())。 cellArrayのindex.rowの位置に生成したcellを格納すれば、cellArray[index.row]で取り出せます。 ただし、データ数分のcellを生成することになり、tableView.dequeueReusableCellを使用する時よりもメモリ使用量が増えます。
kizahashi

2018/04/15 02:52

まだtableViewCellの扱いについての理解が浅いので勉強してきます。 ご丁寧に返信ありがとうございました。
guest

0

ベストアンサー

もとよりチェックをつけ直すというのが実装できません

チェックを付け直すというより、SoundSelectTableViewControllerが表示されたときに、
全てのセルにチェックされていない状態を設定しているのでこの機能をつかって特定セルだけに
チェックをつけてあげるのはどうでしょうか?

swift

1override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 2 let cell = tableView.dequeueReusableCell(withIdentifier: "soundSelectCell", for: indexPath) 3 cell.textLabel?.text = soundArray[indexPath.row] 4    cell.selectionStyle = UITableViewCellSelectionStyle.none 5 return cell 6} 7

let Cell の部分で全てのセルを指定してチェックなし状態を適用しているので
selectSettingに値がある場合だけその値に対応するセルにチェックを付けるというふうに
if文で分岐してあげて特定CELLだけチェックを入れてあげればよいのではないでしょうか。

selectSettingにアラーム名を保持している場合は、indexOfで配列から対応するindexpathを取得して使います。
selectSettingにIndexPath.row(Int)を保持している場合はそのまま使えますね。

tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath)
は自動実行なのでチェックを付けるタイミングは考えなくても不自由ないかと思います。

投稿2018/04/12 06:45

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

kizahashi

2018/04/12 07:38

ご回答感謝いたします! Swift``` if selectSetting == "alerm1"{ cell.accessoryType = .checkmark }else if selectSetting == "alerm2"{ cell.accessoryType = .checkmark }else if selectSetting == "alerm3"{ cell.accessoryType = .checkmark }else{ } ``` このような感じでcellForRowAt内でif分岐するということですよね? この記述cell.accessoryType = .checkmarkですと全てのcellにチェックマークがつきます 特定のセルにだけチェックマークというやり方が全くわかりません indexOfをつかうというのはどう言った風にでしょうか? cell.selectSetting.indexOf[1]みたいな感じには指定できませんでした
退会済みユーザー

退会済みユーザー

2018/04/12 14:42 編集

適当ですが、こんな感じはどうでしょう? キーはindexPath.rowなので配列ないの保存されたアラーム名の順番を取得 let checkedCellindex = soundArray.indexOf(selectSetting) let cell = tableView.dequeueReusableCell(withIdentifier: "soundSelectCell", for: indexPath) cell.textLabel?.text = soundArray[indexPath.row]    if checkedCellindex == indexPath.row { ←ここの条件式エラー出るかも // 保存されたアラーム名に対応するインデックスのセルを処理する場合    cell.selectionStyle = チェックありセルスタイル return cell   } else {    // それ以外のセルを処理する場合   cell.selectionStyle = UITableViewCellSelectionStyle.none return cell } } selectSettingに値がない場合はindexOfのところでエラーになるので、オプショナルの対処も必要ですね guard let文が使い勝手が良いと思います。
kizahashi

2018/04/14 03:13

返信ありがとうございます 以下のコード let checkedCellindex = soundArray.index(of: selectSetting) if checkedCellindex == indexPath.row { //←ここの条件式エラー出るかも // 保存されたアラーム名に対応するインデックスのセルを処理する場合 cell.accessoryType = UITableViewCellAccessoryType.checkmark cell.selectionStyle = UITableViewCellSelectionStyle.none } else if checkedCellindex != indexPath.row{// それ以外のセルを処理する場合 cell.accessoryType = UITableViewCellAccessoryType.none cell.selectionStyle = UITableViewCellSelectionStyle.none }else{ cell.accessoryType = UITableViewCellAccessoryType.none return cell } をcellForRowAtのところに追加したところ おかげさまで遷移して戻ってきた際チェックマークがつくようになりました! ですが、遷移し終わった後に他のセルを選択しチェックマークをつけても 先ほど保持していたチェックマークだけは消えません(チェックマークついたままもう一度選択してみた後だと消えるようになる) もしよろしければでいいのでお分かりでしたらご教示お願いいたします。
kizahashi

2018/04/14 03:21

didSelectRowとdidDeselectRowは以下のようになっております。 override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath){ let cell = tableView.cellForRow(at:indexPath) tableView.allowsMultipleSelection = false // チェックマークを入れる cell?.accessoryType = .checkmark selectSetting = soundArray[indexPath.row] UserDefaults.standard.set(selectSetting, forKey: "selectSettingKey") UserDefaults.standard.synchronize() } override func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) { let cell = tableView.cellForRow(at:indexPath) // チェックマークを外す cell?.accessoryType = UITableViewCellAccessoryType.none }
退会済みユーザー

退会済みユーザー

2018/04/14 03:53

今自分がいる環境があれなので、きちんと返信できないのですが、 セルフォーローアットは自動実行されるので、selectSettingに値があると 勝手にチェックをつけに行きますよ。 チェックを外したらどこにもチェックがついていないと言う状態をセレクトセッティングに記憶してあげたらどうでしょうか
kizahashi

2018/04/14 05:28

selectSettingは文字列の配列ですがそれに記憶するというのはどういうことなのでしょうか、すみませんわかりません なぜdidDeselectRow内で cell?.accessoryType = UITableViewCellAccessoryType.none としているのにチェックマークが完全に消えないのでしょうか
退会済みユーザー

退会済みユーザー

2018/04/14 06:05 編集

>selectSettingは文字列の配列ですがそれに記憶するというのはどういうことなのでしょうか、 >すみませんわかりません チェックを外す = 選択されているアラーム名が無い = "" selectSettingはString型で配列ではありません。 記憶できるのはアラーム名1つですよ。 >なぜdidDeselectRow内で >cell?.accessoryType = UITableViewCellAccessoryType.none >としているのにチェックマークが完全に消えないのでしょうか tableViewのチェックはタップして外したけれど、それを保存するソースがない。 selectSettingに以前にチェックしたアラーム名が入っているので、 override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) がデータの更新とか画面の更新がかかった際に(←ここは適当に書いてます)対応するセルにチェックを付け行くと思います。 ので、チェックを外してあげたらselsectSettingも変更して上げる必要があると思います ここではselsectSettingはStringなので、チェックしてあるセルがない場合は アラーム名""を代入してあげるのかと思います。 ただし、アラーム名が""の場合、indexOFのところで対応するindexpathが取得できずに エラーが出るのでその辺を考慮してあげてください。 guard let が使い勝手がいいですね。 newmtさんの回答の中にある、contains()もいいなーと思いました。
退会済みユーザー

退会済みユーザー

2018/04/14 11:09

チェックを外す部分が足らないみたいですね。 ↓下記のdidSelectRowAtIndexPathの部分のif部分を参考にしてみてください。 https://teratail.com/questions/15498
kizahashi

2018/04/15 02:49

ご回答してくださった御三方何回も丁寧に返信していただき本当にありがとうございました。 以下のように override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath){ let cell = tableView.cellForRow(at:indexPath) tableView.allowsMultipleSelection = false // チェックマークを入れる if selectSetting == ""{} tableView.reloadData() didSelectRow内でチェックマークをつけた後にtableView reloadData()を付け加えたところチェックマークがちゃんと一つだけつくようになってくれました。 まだtableViewについての理解が浅いと思ったので今回のご回答を参考にしてもっと理解できるよう頑張りたいと思います。 みなさまほんと感謝です!m(_ _)mm(_ _)m
kizahashi

2018/04/15 03:03

先ほどのコード間違えましたこちらが正しい方です override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath){ let cell = tableView.cellForRow(at:indexPath) tableView.allowsMultipleSelection = false // チェックマークを入れる cell?.accessoryType = .checkmark tableView.reloadData()
guest

0

UITableViewCellはスクロールされて画面から見えなくなると、これから見える別のCellとして再利用されますので、その際にチェックをつけたという情報はなくなってしまいます。

例えば、
・チェックしている行(indexPath.row)を配列で保持する
・didSelectRowAt, didDeselectRowAtで対象行の配列への追加、削除を行う
・cellForRowAtで配列に含まれている行のチェックマークにチェックをつける

などいかがでしょうか?

投稿2018/04/10 11:30

newmt

総合スコア1277

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

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

kizahashi

2018/04/11 00:28

ご回答感謝いたします! UItableViewのスクロールではなく、一度他のTableViewControllerやViewControllerに画面遷移をして、また戻ってきた時にチェックマークが外れてしまっているのです。 チェックしている行(indexPath.row)を配列で保持するというのは チェックマークがついていることをBoolなどで判断するということでしょうか。特定のcellだけにチェックマークがついているかどうかを判断するコードを書こうと試行錯誤しましたがダメでした。 ・didSelectRowAt, didDeselectRowAtで対象行の配列への追加、削除を行う 選択された際の挙動は一応できている状態です。 画面遷移をして戻っていきた際に表示するとなるとやはりcellForRowAt内だと思うのですが、特定のセルのみを選択してチェックマークをつけるというコードは書けないですね、、
退会済みユーザー

退会済みユーザー

2018/04/11 01:19

よこから失礼します。 空の配列をつくって var checkedCell = [IndexPath]() チェックを付けた際のindexPathを配列に保存しておいて checkedCell.append[indexpath] 戻ってきた際に配列を読み込んでチェックを付けなおせばよいのかと思います。 for-inで取り出して、セルを特定して、特定したセルにチェックを付けるというかんじ? ご自分でできるスキルは十分にお持ちだと思いますよ。
newmt

2018/04/11 01:46 編集

私の意図していることもtyobigoroさんのおっしゃる通りで、 var checkedCell = [IndexPath]()で配列を保持し、(今回はSectionが1つなのでvar checkedRows = [Int]() indexPath.rowでも良いかなと思いました。) cellForRowAtのindexPathに対してcheckedRows.contains(indexPath.row)などで判定できると思います。
退会済みユーザー

退会済みユーザー

2018/04/11 02:33 編集

ごめんなさい。 保存する配列をどこにどのように置くのが良いかnewmtさんにお伺いしようと思って よんだらチェックマークの保存方法が書いてありますね。 チェックマークは同時に1つだけしか付けない前提かな? var selectSetting: String = "" に selectSetting = soundArray[indexPath.row] でアラームの名前を保存して(Stringだから一つだけ) UserDefaults.standard.set(selectSetting, forKey: "selectSettingKey") でユーザーデフォルトにかきだしてるから、 selectSetting = soundArray[indexPath.row] のときにユーザーデフォルトに書き出してあげておいて 戻ってくる時にユーザーデフォルトからアラーム名を読み込んで、 対応する var soundArray = ["alerm1","alerm2","alerm3","alerm4"] のindexpathを取得して let selectCell = ナンチャラカンチャラとかするのが一番かんたんですかこれ?
kizahashi

2018/04/12 04:40

御二方とも返信ありがとうごさいます。 チェックをつけたcellのみを空の配列checkedCellにappendしていきそれをuserdefaultsで保持するということですよね? チェックをつけたことを判断するコードというのはどういうものなのでしょうかcell.accessoryType = true or falseとかだとtableview全体のことになってしまいますよね? もとよりチェックをつけ直すというのが実装できません やはり特定のセルにチェックマークをつけた状態で画面が表示される、ということを実装するのは難しいのでしょうか
退会済みユーザー

退会済みユーザー

2018/04/12 05:10 編集

私が最初に書いたのは複数チェックされることを想定したものだったのですが、 kizahashiさんが提示したコードにはチェックしたセルを保存する仕組みが備わっていましたので、 その方法で実現した方がよいのかなと思います。 提示されているコードでは、 ↓ここでセルにチェックを入れています。(実際に入るかは私の方では確認していないのですが) cell?.accessoryType = .checkmark それとともに↓でチェックしたセルに表示されているアラームの名前を変数selectSettingに保存しています。 selectSetting = soundArray[indexPath.row] で、このselectSettingをユーザーデフォルトに保存することによって、現在選択されている アラーム名を記憶することができます。 UserDefaults.standard.set(selectSetting, forKey: "selectSettingKey") 適切なタイミングでこれを実行してあげればselectSettingが永続化できます。 selectSettingはユニバーサル変数なので、他の画面に遷移してもアクセスできますし、 他の画面から戻ってきても変数の内容は消えていないので直接アクセスできます。 また一旦アプリ再起動した場合はユーザーデフォルトからselectSettingを読み込むことによって 前回アプリで選択したアラーム名を知ることができます。 遷移先から戻ってくる場合や、アプリを再起動した場合にセルにチェックをつける場合は 保存したアラーム名に対応するindexpathを取得して、そのindexpathに対応するcellにチェックをつけてあげれば良いと思います。 「チェックを付けたことを判断するコード」?というのは、セルにチェックを付けた時に 同時にどのセルにチェックを付けたかを記録しておくという方法です。 全てのセルに対してBoolでtrue/falseで記録するのではなく。 基本は全てチェックされていないとして、チェックがされているセルの情報だけを記録します 私が書いた方法ではチェックされたセルのindexpathを保存します。 提示されているコードでは。選択されているアラーム名を保存します。 保存されていないセルはチェックされていないと解釈します。 設定画面で設定された項目を保存して表示することは難ししことではないですよ。 頑張ってみてください。
newmt

2018/04/12 05:20

返信遅くなりまして申し訳ございません。tyobigoroさんの方法で良いと思います。 「チェックをつけたことを判断するコードというのはどういうものなのでしょうかcell.accessoryType = true or falseとかだとtableview全体のことになってしまいますよね?」 cellForRowAtは個々のセルの設定をしていますので、tableview全体とはなりません。引数のindexPathでどのセルに対しての設定かわかるのでそこから判断ができます。
kizahashi

2018/04/12 07:55

いえ質問しているのはこっちなのでいくら遅れようが構いませんよ ありがとうございます cell.accessoryType = trueとcellForRowAt内に書くと全てのセルにチェックマークがついてしまいますね 引数のindexPathから特定のセルを判別できるということですがそれはどのように選択するのでしょうか? [indexPath.row]といつも書いているところに配列番号を入れてみたりいろいろ試行錯誤してみましたができませんでした そもそもindexPathというのは配列を示しているという認識で合っていますかね?
newmt

2018/04/12 08:16 編集

cell.accessoryType = trueではなく、 cell.accessoryType = .checkmarkとcell.accessoryType = .noneでできませんでしょうか? 例えば、var selectSetting = [Int]()として、選択されているrowを保持しておき、 if (selectSetting.contains(indexPath.row)) { cell.accessoryType = .checkmark } else { cell.accessoryType = .none } などでできませんでしょうか?
kizahashi

2018/04/15 02:56

すみませんcell.accessoryType = trueはおかしかったです。 ご丁寧に返信ありがとうございました。とても勉強になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問