在Swift 3中,如何在tableview中選擇多個選擇並保存它們?如果我移回去,我想看看我之前選擇的內容並更改它!我正在使用didSelectRowAtIndexPath
和didDeselectRowAtIndexPath
。如何在桌面視圖中選擇並保存多個選擇
當我打開tableview並選擇行時,一切正常。我可以做出選擇並轉到下一個ViewController。但是當我移回到TableView時,我沒有看到我選擇的行並且無法更改我的選擇。
var selectedRows = Array<IndexPath>()
override func viewDidLoad() {
super.viewDidLoad()
subServicesTableView.allowsMultipleSelection = true
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! SubServicesTableViewCell
cell.subServiceName.text = fetchedResultController.object(at: indexPath).name
if !selectedRows.isEmpty {
for row in selectedRows {
if row == indexPath {
cell.isSelected = true
cell.accessoryType = cell.isSelected ? .checkmark : .none
}
}
}
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let currentCell = subServicesTableView.cellForRow(at: indexPath) as! SubServicesTableViewCell
currentCell.chooseMark.backgroundColor = UIColor.green
selectedSubServices.append(fetchedResultController.object(at: indexPath))
selectedRows.append(indexPath)
}
func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
let currentCell = subServicesTableView.cellForRow(at: indexPath) as! SubServicesTableViewCell
currentCell.chooseMark.backgroundColor = UIColor.clear
selectedSubServices = selectedSubServices.filter(){$0 != fetchedResultController.object(at: indexPath)}
selectedRows = selectedRows.filter(){$0 != indexPath}
}
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
for index in selectedRows {
if index == indexPath {
self.subServicesTableView.selectRow(at: indexPath, animated: false, scrollPosition: .none)
if let serviveCell = cell as? SubServicesTableViewCell {
serviveCell.chooseMark.backgroundColor = UIColor.green
}
}
}
}
您需要爲您的選擇引入某種持久性。你可以簡單地介紹一個單身人士,這個單身人士可以參考選擇。 – dirtydanee