作者:继续微笑丶保持硪的骄傲_195 | 来源:互联网 | 2023-02-05 12:11
我正在使用下面的代码删除tableview中的一行.首先,我从数组中删除对象,然后使用以下代码从tableview中删除:
let i = IndexPath(item: rowNum, section: 0)
myArray.remove(at: rowNum)
myTableView.deleteRows(at: [i], with: UITableViewRowAnimation.left)
但是,如果我之后删除了另一行,则不会删除我想要删除的行.问题是,即使我删除了tableview中的第一项(例如索引0),单击新的第一行将返回索引1 ...这是错误的,并删除第二行.删除第一行后,顶部的新行应该具有0的索引.
我可以通过这样做来解决这个问题:
mTableView.reloadData()
但这似乎错了......我不应该再次重新加载所有数据.
我还可以做些什么?
编辑:我在tableviewcell中有一个自定义按钮我要按删除行 - 不要刷卡.
1> Dhiru..:
问题
您遇到的问题是您在按钮上设置的标记,删除行时按钮标记不会更改,因为它的所有单元格都没有重新加载.我想你正在设置标签cellforRowIndexpath
你尝试将标签放在按钮上tableWillDisplayCell
要么
最好的方法是在下面.
解
你可以通过IndexPath
其他方式获得
假设您的视图层次结构是
UITableViewCell-> contentView - >按钮
在你按钮点击方法
if let cell = sender.superview?.superview as? UITableviewCell{
let indexPath = myTableView.indexPath(for: cell)
// Now delete the table cell
myArray.remove(at: indexPath.row)
myTableView.beginUpdates()
myTableView.deleteRows(at: [indexPath], with: UITableViewRowAnimation.left)
myTableView.endUpdates()
}
我希望这对你有用.