防止UITableViewCell子类允许滑动删除?

时间:2014-07-25 13:45:57

标签: ios objective-c uitableview

我想阻止自定义UITableViewCell滑动以显示红色的“删除”按钮。我可以在UITableView上禁用此功能,但我没有看到任何允许在单元类中完成此操作的现有问题,这意味着我不需要在使用该单元格的每个表上执行此操作。 / p>

我可以直接在单元格类中禁用此功能(不完全禁用编辑,我有一个自定义的pann-able溢出)吗?

4 个答案:

答案 0 :(得分:3)

只需使用:

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
    return indexPath.row != THE_ROW_YOU_WANT_TO_STOP;
}

答案 1 :(得分:1)

尝试按以下方式覆盖- (void)setEditing: animated:方法:

- (void)setEditing:(BOOL)editing animated:(BOOL)animated
{
    [super setEditing:NO animated:NO];
}

答案 2 :(得分:1)

您需要实现editingStyleForRowAtIndexPath并在那里执行测试。

如果只有一个单元格具有此pannable溢出并且您知道哪一行,则可以定义一个常量并对其进行测试,如下所示:

#define kPANNABLE_OVERFLOW_CELL_ROW  7

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if ( indexPath.row == kPANNABLE_OVERFLOW_CELL_ROW )
    return UITableViewCellEditingStyleNone;
}

如果你有多个需要这种治疗的任意细胞,你需要稍微改变一下。

内部

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    // create your table view cell
    if ( _Your_table_view_cell_is_the_pannable_overflow_type_ ) {
        cell.editingStyle = UITableViewCellEditingStyleNone;
    }
}

答案 3 :(得分:1)

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
    return UITableViewCellEditingStyleNone;
}

尝试上面的代码,它只是禁用tableview单元格滑动中的删除按钮。

编辑隐藏按钮的按钮转到此处

iPhone UITableView - Delete Button