就我而言,我正在JSON
的帮助下将Tableview
数据加载到codable
中。 tableview有多个select
和deselect
复选标记选项。现在,我需要将选择的值Insert
合并为一个array
,如果用户取消选择该单元格需要从同一数组中选择remove
相关值,则需要同时进行。存储的数组数据,我将在多个viewcontroller
中使用。如何实现呢?
JSON可编码
// MARK: - Welcome
struct Root: Codable {
let status: Bool
let data: [Datum]
}
// MARK: - Datum
struct Datum: Codable {
let userid, firstname, designation: String?
let profileimage: String?
}
我的Tableview委托的代码库
var studentsData = [Datum]()
var sessionData = [Datum]()
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.studentsData.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell:MyCustomCell = self.tableView.dequeueReusableCell(withIdentifier: cellReuseIdentifier) as! MyCustomCell
let item = self.studentsData[indexPath.row]
cell.nameCellLabel.text = item.firstname
cell.subtitleCellLabel.text = item.designation
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
let item = self.studentsData[indexPath.row]
if let cell = tableView.cellForRow(at: indexPath) {
if cell.accessoryType == .checkmark {
cell.accessoryType = .none
// UnCheckmark cell JSON data Remove from array
if let index = sessionData.index(of:item) {
sessionData.remove(at: index)
}
print(sessionData)
} else {
cell.accessoryType = .checkmark
// Checkmark selected data Insert into array
self.sessionData.append(item)
print(sessionData)
}
}
}
最佳答案
您可以通过搜索其索引来删除数组内的项目
let index = try? array.firstIndex(where: { $0. userid == sessionData[indexPath.row].userid })
或者您可以使用此Checking if an array of custom objects contain a specific custom object
关于ios - 根据UITableview单元格选择和取消选择将添加和删除项目快速添加到数组中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58669519/