我似乎无法一起使用deleteRowsAtIndexPaths
和reloadRowsAtIndexPaths
。
在didSelectRowAtIndexPath
中,调用reloadRowsAtIndexPaths
来更新行。
在我的自定义ViewCell中,我使用委托删除TableView中的行,每当我滑动此单元格时都使用deleteRowsAtIndexPaths
。标签设置为与滑动一起移动,如果不满足条件则返回。
在调用deleteRowsAtIndexPaths
删除行之前,一切正常。从这里开始,下一个单元格表现奇怪,标签处于将要删除单元格的状态。
要解决此问题,我可以使用reloadData()
代替,但我真的想知道导致此行为的原因,而不是一直强制使用reloadData()
。
didSelectRowAtIndexPath
的代码:
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
// Code to add item to datamodel
tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: .None)
}
cellForRowAtIndexPath
的代码:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = orderTableView.dequeueReusableCellWithIdentifier("orderViewCell") as! OrderViewCell
let item = data[indexPath.row]
cell.delegate = self
cell.nameLabel.text = item.name;
cell.amountLabel.text = item.amount
cell.priceLabel.text = item.price
cell.amount = item.amount;
cell.name = item.name
return cell
}
处理删除的方法:
func deleteItem(name: String) {
if let index = find(data.map { $0.name }, name) {
data.removeAtIndex(index)
let indexPath = NSIndexPath(forRow: index, inSection: 0)
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Left)
}
}