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 单元格滑动中选择“删除”,但未调用“提交编辑样式”

UITableView:滑动表格视图单元格时如何停止选择

UIScrollView 嵌套UITableView 左滑删除和UIScrollView滑动冲突

UITableView 滑动删除在 iOS8 上无法正常工作

Swift:UITableView - 滑动删除 - 如何让单元格内容在滑动时不移动

滑动删除 UITableView (iOS) 中的整个部分