Subclassed UITableViewCell,使删除按钮不显示

时间:2010-12-30 05:18:34

标签: iphone objective-c ios

我正在尝试模仿联系人应用中可编辑表格单元格的行为。我已经将UITableViewCell子类化,添加了我自己的UITextField,并设置了行为,如果按下编辑,标签将被隐藏,我的文本字段将被启用,并显示,反之亦然。那部分工作正常。

我不希望我的用户能够删除行,但我无法找到在何处/如何禁用和隐藏单元格左侧的删除按钮。任何建议将不胜感激。

3 个答案:

答案 0 :(得分:5)

我应该更清楚。我希望编辑按钮能够隐藏和显示单元格中的各种内容,但我不想显示删除按钮。

我发现对我不想删除的单元格执行以下操作:

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

按下编辑时,视图仍然向右滑动,我的单元格进入编辑模式,但删除按钮消失了。

答案 1 :(得分:0)

Chuck你不能覆盖单击( - )按钮时调用的方法。但是你可以通过检查表的currrent模式是否处于编辑模式来检测。  所以你要做的就是保留你自己的客户( - )按钮和点击你可以设置任何你想做的事情,它也不会显示删除按钮..正是你想要的:D

快乐iCODING ...

答案 2 :(得分:0)

相当相同,但我想要的是,如果可以删除一个单元格,以显示删除按钮,如果没有,则弹出一个警告来解释为什么它可以'给用户。

我发现这很棘手,因为虽然我可以在不删除单元格时禁用删除按钮,但这也意味着向右滑动不会调用任何可用于触发警报的操作。 / p>

所以我所做的是让所有细胞被删除"从tableView:canEditRowAtIndexPath返回YES,然后使用以下代码:

  1. 弹出警报,

  2. 导致删除按钮,然后用户可以点击它。

    // This will be called when the user dismisses the alert.
    //
    (void) alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
        [self.tableView setEditing:NO animated:YES];
    }
    
    (void) tableView:(UITableView *)tableView willBeginEditingRowAtIndexPath:(NSIndexPath *)indexPath {
        Item *item = [self itemForIndexPath:indexPath];
    
        if ([item canNotBeDeleted] == YES) {
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Item in use."
                                                            message:@"Sorry but you can't delete a grocery item that has been included in a shopping list."
                                                           delegate:self
                                                  cancelButtonTitle:@"OK"
                                                  otherButtonTitles:nil];
            [alert show];
        }
    }