Swift 如何从另一个视图控制器中删除tableview中的单元格?
我正在尝试从另一个视图控制器删除tableview中的单元格。我已经对我的代码进行了建模,类似于下面发布的问题,但是当在DeleteVC中按下delete按钮时,我似乎仍然无法成功删除CarroEVC中选定的行/单元格 旁注:单元格中有一个按钮可以弹出DeleteVC,我在按下CalorieVC:DeleteRowInTableviewDelegate中的deleteBtn时也遇到了一个错误,Swift 如何从另一个视图控制器中删除tableview中的单元格?,swift,uitableview,delegates,delete-row,Swift,Uitableview,Delegates,Delete Row,我正在尝试从另一个视图控制器删除tableview中的单元格。我已经对我的代码进行了建模,类似于下面发布的问题,但是当在DeleteVC中按下delete按钮时,我似乎仍然无法成功删除CarroEVC中选定的行/单元格 旁注:单元格中有一个按钮可以弹出DeleteVC,我在按下CalorieVC:DeleteRowInTableviewDelegate中的deleteBtn时也遇到了一个错误,let picked说线程1:致命错误:索引超出范围 从数据源中删除该值 删除表格单元格 exte
let picked
说线程1:致命错误:索引超出范围
extension CalorieViewController: DeleteRowInTableviewDelegate {
func deleteRow(inTableview rowToDelete: Int) {
if caloriesItems.count > rowToDelete {
calorieItems.remove(at: rowToDelete)
tableView.deleteRows(at: [IndexPath(row: rowToDelete, section: 0)], with: .automatic)
} else {
print("index not present")
}
}
}
extension CalorieViewController: DeleteRowInTableviewDelegate {
func deleteRow(inTableview rowToDelete: Int) {
if caloriesItems.count > rowToDelete {
calorieItems.remove(at: rowToDelete)
tableView.deleteRows(at: [IndexPath(row: rowToDelete, section: 0)], with: .automatic)
} else {
print("index not present")
}
}
}
我刚刚运行了它,我收到了相同的错误线程1:致命错误:当按下deleteBtn时,卡路里元素的索引超出范围。删除(at:rowtodelet)。另外,我没有否决你的回答,而是更新了答案。似乎您要传递的索引在卡路里项目中不存在。尝试传递rowToDelete=0,然后签入日志,它只显示“索引不存在”,但好的一面是,它不再会损坏模拟器,但仍然失败删除分区中的单元格在TableView中有多个分区,你也需要得到这个部分<代码>[IndexPath(row:rowToDelete,section:0)]这里我们还需要传递section我刚刚运行了它,我得到了相同的错误线程1:致命错误:索引超出了
卡路里项目的范围。按deleteBtn时删除(at:rowToDelete)
。另外,我没有否决你的回答,而是更新了答案。似乎您要传递的索引在卡路里项目中不存在。尝试传递rowToDelete=0,然后签入日志,它只显示“索引不存在”,但好的一面是,它不再会损坏模拟器,但仍然失败删除分区中的单元格在TableView中有多个分区,你也需要得到这个部分[indepath(行:rowToDelete,节:0)]
这里我们还需要传递节不需要使用协议DeleteRowInTableviewDelegate来删除。将项目数组从CalorieViewController
传递到DeleteViewController
并从项目数组中删除所需的项目另一方面,CalorieViewController
override视图将出现方法并放置tableview.reload()
我有点困惑,不知道该怎么做。你能给我举个例子吗?把你的代码示例项目发给我。我能收到你的电子邮件吗?这是我的邮件nazmulcsharp@gmail.com
和Skypenazmulkp1
无需使用协议删除RowIntableViewDelegate
即可删除。将项目数组从CalorieViewController
传递到DeleteViewController
并从项目数组中删除所需的项目另一方面,CalorieViewController
override视图将出现方法并放置tableview.reload()
我有点困惑,不知道该怎么做。你能给我举个例子吗?把你的代码示例项目发给我。我能收到你的电子邮件吗?这是我的邮件nazmulcsharp@gmail.com
和Skypekp1
extension CalorieViewController: DeleteRowInTableviewDelegate {
func deleteRow(inTableview rowToDelete: Int) {
if caloriesItems.count > rowToDelete {
calorieItems.remove(at: rowToDelete)
tableView.deleteRows(at: [IndexPath(row: rowToDelete, section: 0)], with: .automatic)
} else {
print("index not present")
}
}
}