UITableView 区分滑动删除和多行选择
Posted
技术标签:
【中文标题】UITableView 区分滑动删除和多行选择【英文标题】:UITableView differentiate swipe to delete and multiple rows selection 【发布时间】:2012-08-23 08:20:43 【问题描述】:我正在使用 UITableView,并希望同时支持 Apple 提供的标准编辑工具。到目前为止,我可以在单元格上滑动以显示“删除”按钮,然后点击右上角的“编辑”按钮进入多行编辑模式。效果很好。
问题是,我希望我的 tableView 就像邮件应用程序一样,在使用滑动手势进入编辑模式时“除了显示删除按钮之外什么都不做”,以及“显示垃圾箱按钮(任何地方) " 进入多行编辑模式时。我不知道我怎么知道我处于哪种编辑模式...
例如,我添加了setEditing
方法,在该方法中我隐藏了标签栏(只是为了检查我的表格的行为):
-(void)setEditing:(BOOL)editing animated:(BOOL)animated
self.tableView.allowsMultipleSelectionDuringEditing = editing;
[super setEditing:editing animated:animated];
if (editing)
self.tabBarController.tabBar.hidden = YES;
else
self.tabBarController.tabBar.hidden = NO;
现在,当我在单元格上滑动时,或者当我点击编辑按钮时,标签栏被隐藏,之后又恢复正常。我只想在点击编辑按钮时隐藏它。
我应该在哪里以及如何做到这一点?
谢谢。
【问题讨论】:
【参考方案1】:为什么不把发送者交给编辑方法,像这样呢?
-(void)setEditing:(BOOL)editing animated:(BOOL)animated sender:(id)sender
self.tableView.allowsMultipleSelectionDuringEditing = editing;
[super setEditing:editing animated:animated];
if (editing && [sender isKindOfClass:[UIButton class]])
self.tabBarController.tabBar.hidden = YES;
else
self.tabBarController.tabBar.hidden = NO;
【讨论】:
它改变了整个编辑模式的行为!在我的故事板中,我的 tableView 在编辑期间只允许单选,因为这是我可以同时进行滑动和多行编辑的唯一方法。当我点击编辑按钮时,我不能再选择多行了。它现在在单元格的左侧显示一个红色按钮,然后在单击时显示单元格上的删除按钮......毫无疑问,因为不再调用“setEditing”。顺便说一句,我不手动调用'setEditing',所以我猜添加发件人会使我的表“未知”方法,对吧?我应该在某个地方自己称呼它吗?以上是关于UITableView 区分滑动删除和多行选择的主要内容,如果未能解决你的问题,请参考以下文章
在 UITableView 单元格滑动中选择“删除”,但未调用“提交编辑样式”
UIScrollView 嵌套UITableView 左滑删除和UIScrollView滑动冲突
UITableView 滑动删除在 iOS8 上无法正常工作