我已经实现了tableView:editActionsForRowAtIndexPath:
函数,但是我间歇地遇到传递给此函数的indexPath
为零。当我尝试访问indexPath.row
时,其值为18446744073709551615。
我在查询用于构建表的数组中的对象。并导致崩溃 - -[__NSArrayM objectAtIndex:]: index 18446744073709551615 beyond bounds [0 .. 1]'
有一种情况我使用[table reloadData]
一个editAction调用重新加载我的表然后会传递一个nil indexPath,但是这仍然是间歇性的。
有什么方法可以强制将正确的indexPath传递给tableView:editActionsForRowAtIndexPath:
答案 0 :(得分:0)
您必须实现此- (void)tableView:(UITableView *)tableView commitEditingStyle
方法,其中需要调整数据数组。
详情请参阅本文Inserting and Deleting Rows and Sections
您可以通过删除与之对应的项目来处理此问题
首先从data
数组开始行,然后将deleteRowsAtIndexPaths:withRowAnimation:发送到表视图。
尝试在- (void)tableView:(UITableView *)tableView commitEditingStyle
方法中插入以下代码行:
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if ( editingStyle== UITableViewCellEditingStyleDelete) {
// remove item from array at first
[dataArray removeObjectAtIndex:indexPath.row];
// then delete table row from tableview
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
}
希望它能奏效!