当用户点击[删除]时,我首先检查一些内容(部分在线)。可能不允许删除。
当不允许删除该单元格时,如何隐藏[删除]按钮并以动画方式再次将红色(|)按钮变为( - )?所以,我不希望我的整个表离开编辑状态。
答案 0 :(得分:7)
我自己也遇到过这个问题,我可能会提出一个警报视图来提醒用户,如果他们选择不继续,则希望重置删除按钮。这似乎是最简单的方法,假设 deleteIndexPath 是选择删除的行的索引路径:
[self.tableView reloadRowsAtIndexPaths:@[deleteIndexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
答案 1 :(得分:7)
要获取实际动画(而不是UITableViewRowAnimationRight
/ UITableViewRowAnimationAutomatic
)动画,只需执行
[self.tableView beginUpdates];
[self.tableView setEditing:NO animated:NO];
[self.tableView setEditing:YES animated:NO];
[self.tableView endUpdates];
beginUpdates
和endUpdates
提供动画,而tableView只是立即从编辑切换到编辑,关闭了删除按钮。
希望这有帮助!
答案 2 :(得分:1)
我现在看到您只想禁用某些单元格的删除。您可以通过以下几种方式完成此操作:
tableView:canEditRowAtIndexPath
方法:返回NO,将DELETES设置为DISABLED。
tableView:canMoveRowAtIndexPath
:在您要允许重新排序的位置返回YES。
您可能想要考虑对UITableViewCell进行子类化以使其具有维护其自身状态的能力(因此该单元知道是否允许删除。然后您可以询问实际的单元实例并确定是否应该启用删除甚至在列表可能被重新订购之后。
答案 3 :(得分:0)
要在整个表格视图中隐藏任何图标,然后在您的控制器中,
覆盖 EditingStyleForRow 并返回 UITableViewCellEditingStyle.None