UITableView,拦截编辑模式

时间:2008-12-11 16:41:23

标签: iphone cocoa-touch

我很好奇是否可以在UITableView上截取“编辑”模式的默认方法。通常,如果您侧面滑动具有与之关联的委托方法的UITableViewCell,则会获得一个免费的“删除”按钮。我想将删除更改为其他任意选择器。我不想删除单元格,而是想运行一个hello world alert对话框。这种程度有可能吗?

4 个答案:

答案 0 :(得分:21)

编辑是作为UITableView的委托对象上的方法实现的。在你的表控制器中,有任何控件激活编辑调用:

[tableView setEditing: YES animated: YES];

然后,确保您的委托对象实现了这个:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
    if (editingStyle == UITableViewCellEditingStyleDelete) {
            UIAlertView *alert = [[UIAlertView alloc] 
                initWithTitle: @"Delete" 
                message: @"Do you really want to delete “George W. Bush”?" 
                delegate: self
                cancelButtonTitle: @"Cancel"
                otherButtonTitles: @"Of course!", nil];
    }
}

......或者更标准的行动可能是:

[itemList removeObjectAtIndex:indexPath.row];
[table deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:YES];

答案 1 :(得分:6)

@JFMartin和Marco - 替换标准的“删除”按钮使用以下UITableview委托方法

- (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath

答案 2 :(得分:3)

UITableViewCell上有一个名为editAction的属性,记录为允许您更改用于在单个单元格上插入或删除的操作(它也使用单元格的target属性)。我没有测试过,但听起来它可能会做你想要的。

答案 3 :(得分:0)

我将实现UITableViewCell的子类并在那里处理触摸事件。您可能需要自己完成所有动画内容,但我认为这可能是最简单的解决方案。没有用于更改删除按钮的“支持”方法,我不认为