背景:
我有一个显示数组数据的UITableView。我正在利用KVO在数组计数大于0时在导航栏中显示“编辑”按钮,并在计数为0时自行删除。这样可以正常工作。编辑时,我将“删除”栏按钮项目作为右侧栏按钮项目。这也很好。默认情况下启用预期的“删除”按钮。表视图将multipleSelectionDuringEditing设置为YES。我可以选择多个项目并正确删除它们。我的目标是在禁用删除按钮的情况下进入编辑,直到选择至少1个项目,然后在有0个选项时禁用。我尝试了一些东西,但它们没有结果。我试图有一个NSMutableSet属性(私有),我可以监视它的计数,并适当启用/禁用删除按钮。但是,我撞墙了。 tableView:DidSelectRowAtIndexPath:仅在编辑期间的初始选择中调用,而不是在取消选择行时调用。我是否忽略了在编辑模式下监控表格选择的能力?提前谢谢。
另外,如果我要将“删除”按钮移动到UIToolbar并打算包含“全部删除”按钮,是否有办法选择所有行(即使是那些不可见的行)?
答案 0 :(得分:1)
根据文档,在表视图上调用-indexPathsForSelectedRows
可以告诉您现在选择了多少,并且只要用户取消选择行,就应该调用您的代理-tableView:didDeselectRowAtIndexPath:
。
我没有看到以编程方式选择多行的便捷方法。如果您正在执行“全部删除”命令,则删除基础模型对象然后告诉表更新可能更合适(也就是说,不必担心首先选择它们)。您可以使用-deleteRowsAtIndexPaths:withRowAnimation:
和/或-deleteSections:withRowAnimation:
为其设置动画。无论哪种方式,你都必须自己枚举你要删除哪些行/部分,但表格部分/行与模型对象集合之间的对应关系应该非常简单,特别是因为你正在对所有东西进行核对。 / p>