gpt4 book ai didi

arrays - 当用户 didDeselectRowAt 时删除数组元素?

转载 作者:行者123 更新时间:2023-11-28 14:19:08 24 4
gpt4 key购买 nike

当用户取消选择一个单元格时,我试图删除数组中的一个项目。我明白为什么我的代码不起作用,基本上,数组可能包含 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com