セルを表示してチェックマークをつけることは出来たのですが、そこからチェックマークをつけたセルのIndexPathをUserDefaultsに保存して、view読み込み時に、保存したデータからcellに再びチェックマークをつけることが出来ません。具体的なコードは以下のものです。
//ボタンを押すとチェックマークのついたセルのIndexPathをUserDefaultsに保存 @IBAction func hozon(_ sender: UIBarButtonItem) { for x in 0...Name.count-1 { //Name.countはrowの数 let indexPath: IndexPath = IndexPath(row: x, section: 0) let cell = nameList.cellForRow(at:indexPath) //nameListはTableViewの名前 if cell?.accessoryType == .checkmark { check.append(indexPath) //var check = [IndexPath]() } } //UserDefaultsにcheckの内容を保存 UserDefaults.standard.set(check, forKey: "GroupData") } //読み込み時にUserDefaultsに保存されているデータからセルにチェックをつける override func viewDidLoad() { super.viewDidLoad() //UserDefaultsに保存されていたらIndexPath型で代入 if UserDefaults.standard.object(forKey: "GroupData") != nil{ check = UserDefaults.standard.object(forKey: "GroupData")! as! [IndexPath] //チェック入れる for x in 0...check.count-1 { let indexPath: IndexPath = check[x] let cell = nameList.cellForRow(at:indexPath) cell!.accessoryType = .checkmark } } }
これは初めに表示されるビューコントローラのプログラムではありません。このプログラムのビューコントローラにsegueでジャンプする時にアプリが落ちてしまいます。また上のプログラムでは下から3行目の「let indexPath: IndexPath = check[x]」の行にThread 1: Fatal error: Index out of rangeと表示されているので、試しにそこのfor分全体を消去すればこのビューコントローラにジャンプすることが出来ました。しかしその状態でセルにチェックをつけてhozonボタンを押してもアプリが落ちてしまいます。どこがダメでどう改善すべきか教えていただきたいです。お願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/24 09:04
2018/10/24 09:56
2018/10/25 02:08
2018/10/25 02:26 編集
2018/10/25 07:10
2018/10/26 00:30 編集
2018/10/26 07:32
2018/10/26 08:56
2018/10/26 09:05 編集
2018/10/27 02:11
2018/10/28 03:14
2018/10/28 07:47