如何解决在选定索引的表视图中从数组中删除
我正在尝试使用对象数组删除要显示的表格视图中的一行。我在拐角处添加了一个删除按钮,单击它应该删除所选的行,但是无论我单击哪一行,它总是删除第一行。
我首先声明了一个变量:private var indexForCell = Int()
那么我正在像这样使用tableview方法didSelectRowAt
:
override func tableView(_ tableView: UITableView,didSelectRowAt indexPath: IndexPath) {
indexForCell = indexPath.row
}
然后我使用添加的按钮删除:
@IBAction func removePokemon(_ sender: UIButton) {
favourites.remove(at: indexForCell)
self.tableView.reloadData()
}
这将删除行,但始终删除第一行。无论选择哪一行,它总是会删除第一行。我该如何阻止呢?
解决方法
代码行private var indexForCell = Int()
是一个等待发生的错误。 Int()
解析为零,代表第一行。因此,如果您从不选择任何行,它将尝试删除第一行。
使变量为可选:
private var indexForCell = Int?
然后重写您的删除功能:
@IBAction func removePokemon(_ sender: UIButton) {
guard let indexToRemove = indexForCell else {
print("No index selected")
return
}
favourites.remove(at: indexToRemove)
self.tableView.reloadData()
}
但是您不会告诉我们您的favourites.remove(at:
)函数做什么,也不会告诉我们如何填充表格视图,因此很难确定是否还有其他问题。
(顺便说一句,与重新加载整个表格视图相比,删除单个单元格有更好的方法,但让我们集中精力让当前的方法暂时起作用。)
编辑:
如果要删除项目而不选择它的每个单元格上都有一个删除按钮,则需要一种方法来找出包含该按钮的单元格。我写了一个表格视图扩展,可以让您弄清楚这一点。查看此链接:https://stackoverflow.com/a/42043277/205185
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。