UITableView 的 shouldIndentWhileEditingRowAtIndexPath: 没有被调用

Posted

技术标签:

【中文标题】UITableView 的 shouldIndentWhileEditingRowAtIndexPath: 没有被调用【英文标题】:UITableView's shouldIndentWhileEditingRowAtIndexPath: is not called 【发布时间】:2017-04-25 06:19:20 【问题描述】:

我想在使用表格编辑模式时防止表格单元格的内容向左侧移动。我在视图控制器中实现了以下UITableViewDelegate 方法:

- (BOOL)tableView:(UITableView *)tableView shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath 
    return NO;

如建议:

Prevent indentation of UITableViewCell (contentView) while editing

但它似乎从未被调用过。这也不起作用:

cell.shouldIndentWhileEditing = NO;

我正在使用几个自定义编辑行操作,它们的定义如下:

- (NSArray<UITableViewRowAction *> *)tableView:(UITableView *)tableView
                  editActionsForRowAtIndexPath:(NSIndexPath *)indexPath 
    NSMutableArray<UITableViewRowAction *> *actions = [NSMutableArray array];
    id clearHandler = ^(UITableViewRowAction *action, NSIndexPath *indexPath) 
            ...
    ;
    UITableViewRowAction *clearAction = [UITableViewRowAction
                                         rowActionWithStyle:UITableViewRowActionStyleDestructive
                                         title:@"Clear\nStatus"
                                         handler:clearHandler];
    [actions addObject:clearAction];

    id editHandler = ^(UITableViewRowAction *action, NSIndexPath *indexPath) 
        ...
    ;
    UITableViewRowAction *editAction = [UITableViewRowAction
                                        rowActionWithStyle:UITableViewRowActionStyleNormal
                                        title:@"Edit"
                                        handler:editHandler];
    [actions addObject:editAction];

    return actions;

我仔细检查了表格视图的delegate 属性是否指向视图控制器。我还缺少什么?

表格视图样式未分组,即普通。

【问题讨论】:

您使用的是分组表视图吗?来自UITableView.h:“此方法仅适用于分组样式表视图。” 你的问题解决了吗? @norders 表格样式很简单。那么对于普通的表格视图来说不可能实现这一点? 我不知道,但请尝试将表格样式切换为“分组”。如果它有效,那么我会说'不';-) 尝试使用自定义 UITableViewCell 并使用 xib 文件设置单元格中项目的位置。 【参考方案1】:

设置委托和数据源方法

然后

您将 UITableView 的 allowsSelectionDuringEditing 属性设置为 true。

【讨论】:

以上是关于UITableView 的 shouldIndentWhileEditingRowAtIndexPath: 没有被调用的主要内容,如果未能解决你的问题,请参考以下文章

水平 UITableView 中的垂直 UITableView

将 UITableView 推送到 UITableView

如何与重叠显示的 UITableView 交互另一个 UITableView

UITableView

iOS小技能:1. 什么是UITableView? 2. UITableView如何展示数据

UITableView 优化总结