- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当用户取消选择一个单元格时,我试图删除数组中的一个项目。我明白为什么我的代码不起作用,基本上,数组可能包含 5 个元素,如果有 100 个单元格并且用户选择了单元格 10,尝试通过 indexPath.row
取消选择它会崩溃,因为数组只有 5 个元素。关键是当用户取消选择单元格时,它应该从数组中删除相应的元素。这就是我不确定该怎么做的
var transferUsers = [UserModel]()
func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
if let cell = tableView.cellForRow(at: indexPath) {
selectedUsersCount -= 1
if selectedUsersCount == 0 {
nextButton.isEnabled = false
}
cell.accessoryType = .none
transferUsers.remove(at: indexPath.row)
}
}
我试过了 this answer ,但我收到一条错误消息:
Cannot invoke 'index' with an argument list of type '(of: UserModel)'
最佳答案
Okay, so I think you are displaying a list of rows, and when a cell is selected, you add the user to the transferUsers array.这样做的问题是您不会存储所选用户的位置。
一个快速解决这个问题的方法是拥有一个字典,它将索引路径与用户结合起来。
var transferUsers: [IndexPath: UserModel] = [:]
然后,当用户被选中时,您可以这样做:
transferUsers[indexPath] = usersArray[indexPath.row]
当用户被取消选择时,您可以这样做:
transferUsers.removeValue(forKey: indexPath)
selectedUsersCount 可以是一个属性:
var selectedUsersCount: Int {
return transferUsers.count
}
要仅获取所选用户的列表,因为您有字典,您可以这样做:
transferUsers.values
关于arrays - 当用户 didDeselectRowAt 时删除数组元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52009920/
这个问题在这里已经有了答案: Why is -didDeselectRowAtIndexPath not being called? (12 个答案) 关闭 5 年前。 我有一个 UITableVi
当用户取消选择一个单元格时,我试图删除数组中的一个项目。我明白为什么我的代码不起作用,基本上,数组可能包含 5 个元素,如果有 100 个单元格并且用户选择了单元格 10,尝试通过 indexPath
我目前有一个 tableView,我为其创建了自定义选择和取消选择操作(淡入和淡出 View )。我遇到了一个问题,即在返回 tableView 时未调用取消选择操作。我已将必要的取消选择代码添加到我
当我使用 searchController 重新加载我的 TableView 时,我正确地看到了那些被选中的用户,因为我将它们添加到一个数组 (utentiSelezionati) 中并且我执行了检查
这个问题在这里已经有了答案: Why is -didDeselectRowAtIndexPath not being called? (12 个答案) 关闭 4 年前。 我有一个虚拟动态 Table
我不明白为什么我不能切换选定的表格行。我在 didSelectRowAt 中成功设置了 accessoryType。但是我似乎无法在 didDeselectRowAt 中将 accessoryType
我是一名优秀的程序员,十分优秀!