如何在iPhone中删除一行表

时间:2009-07-22 22:11:57

标签: iphone objective-c uitableview

我有一个UITableView,我希望为用户提供在他滑动或轻弹手指时删除行的功能。我知道编辑样式,它提供了一个带有-ve标志的圆形红色按钮。但是如何实现轻弹风格。我看到很多应用程序使用它,因此apple为它提供了任何内置的委托,或者我们需要为它编写自己的控制器。

2 个答案:

答案 0 :(得分:32)

为了获得滑动效果,您需要实现表视图委托

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 

方法,这将提供对滑动交互的访问以进行删除。我通常也会为可以删除的tableviews提供编辑交互,因为滑动交互往往对用户有点隐藏。

举个例子:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
  [tableView beginUpdates];    
  if (editingStyle == UITableViewCellEditingStyleDelete) {
    // Do whatever data deletion you need to do...
    // Delete the row from the data source
    [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath, nil] withRowAnimation:UITableViewRowAnimationTop];   
  }       
  [tableView endUpdates];
}

希望有所帮助。

答案 1 :(得分:2)

我几乎肯定有一个示例应用程序可以做到这一点。一个更具体的答案即将到来。

更新:iPhoneCoreDataRecipes可能正是您正在寻找的内容。

关于主题,这是最甜蜜的提供方法之一:

// If I want to delete the next 3 cells after the one you click
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
  NSMutableArray* indexPaths = [NSMutableArray array];
  for (int i = indexPath.row + 3; i < indexPath.row + 3; i++)
  {
    [indexPaths addObject:[NSIndexPath indexPathForRow:i inSection:0]];
  }

  [tableView beginUpdates];
  [tableView deleteRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationFade];
  [tableView endUpdates];
  [tableView deselectRowAtIndexPath:indexPath animated:YES];
}

我认为有一种更简单的方法来实现你想要的东西,但这又很容易。唯一的困难可能是删除自己......只要注意段错误。