2008-12-11 143 views
13

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

回答

3

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

+3

从iOS 3.0开始,此功能已被弃用。 – 2011-10-08 16:40:26

0

我会实现一个UITableViewCell的子类,并在那里处理触摸事件。你可能必须自己做所有的动画,但我认为这可能是最简单的解决方案。没有“支持”方法来更改删除按钮,我不认为

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

问题是用户点击“取消”时该怎么做。我所做的唯一一件事情就是`reloadRowsAtIndexPaths`来摆脱删除按钮。 – 2010-07-28 02:41:02

6

@JFMartin和Marco - 使用下面的UITableview代理方法替换标准的“删除”按钮

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