参考这个问题:Exit Edit Mode
关于在删除最后一行时退出编辑模式,我的问题是 - 如何更新导航栏"编辑"项目?删除最后一行后,我想完全删除此导航栏项目并退出编辑模式(根据下面的问题完成)并将此按钮状态恢复为"编辑" (而不是"完成"这是删除最后一行后的状态)。
这就是我现在正在做的事情:
- (void)tableView:(UITableView *)aTableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
...
if ([section count] == 0) { //last row in the section
[listOfItems removeObject:accessNumbers]; //updating my data source
tblSimpleTable.editing = NO; //added per the question above
// self.navigationItem.rightBarButtonItem = nil; --> thats what ideally i would want to do
// [self setEditing:YES animated:YES]; --> adding this manually doen't help
}
else
{
...
}
}
}
谢谢你的帮助!
更新:添加此行没有帮助。我仍然需要点击导航栏项目"完成"退出编辑模式。
[self.tblSimpleTable setEditing:YES animated:YES];
如果我也隐藏了导航栏项目,我基本上根本无法退出编辑模式,并且屏幕被冻结(我在视图上有一些其他按钮,在这种情况下根本不再对触摸作出反应)。
答案 0 :(得分:4)
根据Apple文档,您无法在[self.tableview setEditing:NO animated:YES]
内拨打tableView:commitEditingStyle:forRowAtIndexPath:
。以下是相关摘录:
注意:数据源不应在其
setEditing:animated:
的实现中调用tableView:commitEditingStyle:forRowAtIndexPath:
。如果出于某种原因必须使用performSelector:withObject:afterDelay:
方法,则应在延迟后调用它。
大概可以创建一个选择器来关闭编辑模式并删除按钮。
答案 1 :(得分:3)
您可以在另一个回调中强制执行此规则吗?
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
BOOL answer = [section count] > 1;
self.navigationItem.rightBarButtonItem = (answer)? self.editButtonItem : nil;
return answer;
}
答案 2 :(得分:2)
我遇到了同样的问题(无法让barButtonItem的状态恢复为'在调用setEditing
后编辑')并从此回答中学习https://stackoverflow.com/a/11490594/2888978改变方式的方法是编辑'回到'完成'在中殿栏上是在视图控制器上调用setEditing
,而不是表。然后,您可以将barButtonItem设置为.None
,以便在表为空时将其从导航栏中删除。
所以不要打电话:
self.tableView.setEditing(false, animated: true)
你会打电话:
self.setEditing(false, animated: true)
否则只有单元格的编辑模式会改变。
答案 3 :(得分:1)
要退出编辑模式,请使用:
[self.tableview setEditing:NO animated:YES];
要全部删除按钮,请使用:
// Note that this only removes the right-most button. If you want to remove all of the buttons on the right side, use rightBarButtonItems instead.
self.navigationItem.rightBarButtonItem = nil;
// If you want it animated, use:
[self.navigationItem setRightBarButtonItem:nil animated:YES];