从选定索引处的表视图中的数组中删除
Delete from array in a tableview at the selected index
我正在尝试删除我使用对象数组呈现的表视图中的一行。我在角落添加了一个删除按钮,点击它应该删除 selected 行,但它总是删除第一行,无论我点击哪一行。
我先声明了一个变量: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()
}
这会使行删除但始终是第一行。无论我 select 的哪一行,它总是删除第一行。我该如何阻止它?
代码行 private var indexForCell = Int()
是一个等待发生的错误。 Int()
解析为零,代表第一行。因此,如果您从未 select 一行,它将尝试删除第一行。
使变量成为可选的:
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:
) 函数是做什么的,也没有告诉我们你是如何填充你的 table 视图的,所以很难判断是否还有其他问题,因为嗯。
(顺便说一句,有比重新加载整个 table 视图更好的方法来删除单个单元格,但让我们集中精力让当前的方法发挥作用。)
编辑:
如果每个单元格上都有一个删除按钮,您想在不 select 的情况下删除该项目,则需要一种方法来确定哪个单元格包含该按钮。我写了一个 table 视图扩展,可以让你弄明白。看到这个 link:
我正在尝试删除我使用对象数组呈现的表视图中的一行。我在角落添加了一个删除按钮,点击它应该删除 selected 行,但它总是删除第一行,无论我点击哪一行。
我先声明了一个变量: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()
}
这会使行删除但始终是第一行。无论我 select 的哪一行,它总是删除第一行。我该如何阻止它?
代码行 private var indexForCell = Int()
是一个等待发生的错误。 Int()
解析为零,代表第一行。因此,如果您从未 select 一行,它将尝试删除第一行。
使变量成为可选的:
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:
) 函数是做什么的,也没有告诉我们你是如何填充你的 table 视图的,所以很难判断是否还有其他问题,因为嗯。
(顺便说一句,有比重新加载整个 table 视图更好的方法来删除单个单元格,但让我们集中精力让当前的方法发挥作用。)
编辑:
如果每个单元格上都有一个删除按钮,您想在不 select 的情况下删除该项目,则需要一种方法来确定哪个单元格包含该按钮。我写了一个 table 视图扩展,可以让你弄明白。看到这个 link: