Я столкнулся с той же проблемой, что и в этом вопросе:
как я могу сохранить выбранные строки таблицы в nsuserdefaults в swift 3
Однако мне интересно узнать, как повторно заполнить сохраненные строки, которые были отмечены галочкой?
Благодарю вас!
Я столкнулся с той же проблемой, что и в этом вопросе:
как я могу сохранить выбранные строки таблицы в nsuserdefaults в swift 3
Однако мне интересно узнать, как повторно заполнить сохраненные строки, которые были отмечены галочкой?
Благодарю вас!
Создайте переменную с didSet
, чтобы мы могли перезагрузить таблицу после присвоения ей значения.
var selectedRows: [Int] = [] {
didSet {
myTableView.reloadData()
}
}
В viewDidLoad()
присвоить значение selectedRows
из userDefaults
override func viewDidLoad() {
super.viewDidLoad()
selectedRows = UserDefaults.standard.value(forKey: "selectedRows") as? [Int] ?? []
}
Используйте этот код для обновления ячейки.
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell(style: .default, reuseIdentifier: "myCell")
cell.textLabel?.text = "\(indexPath.row)"
cell.accessoryType = selectedRows.contains(indexPath.row) ? .checkmark : .none
return cell
}
Наконец, в didSelectRowAt
используйте эту логику, чтобы обновить переменную selectedRows
и сохранить ее в userDefaults
.
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if selectedRows.contains(indexPath.row) {
self.selectedRows = selectedRows.filter{$0 != indexPath.row}
}else{
self.selectedRows.append(indexPath.row)
}
UserDefaults.standard.set(selectedRows, forKey: "selectedRows")
}
Я надеюсь, что это полезно. Дайте мне знать, если у вас возникнет путаница.
Спасибо