UITableViewCell删除按钮没有出现

时间:2013-03-18 02:37:01

标签: iphone ios uitableview

我有一个UITableview,我放在一个JASidePanel控制器(https://github.com/gotosleep/JASidePanels)中我已经在我的init方法中设置了委托和数据源,我已经实现了canEditRowAtIndexPath方法,当我滑动时它们被调用一个tableview单元格,但没有任何视觉效果。我已经查看了其他问题并已实现了所有建议,但无法显示删除按钮。有谁知道会导致这种行为的原因是什么?

3 个答案:

答案 0 :(得分:7)

您必须实施tableView:editingStyleForRowAtIndexPath:委托方法和tableView:commitEditingStyle:forRowAtIndexPath:数据源方法。如果没有这些,删除将不会出现在单元格中。

我假设您从YES数据源方法返回tableView:canEditRowAtIndexPath:(至少对于相应的行)。

答案 1 :(得分:1)

您是否尝试过此类自己的删除单元格的方法。?

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
   if (UITableViewCellEditingStyleDelete) {
      int k = [[tempArray objectAtIndex:indexPath.row] intValue];

      //Remove object from index 'k'.
   }
}

它可能对你有帮助。

感谢。

答案 2 :(得分:0)

在滑动TableViewCell时执行UITableView的删除操作。我们必须实现以下三种方法: -

此方法将在滑动TableViewCell时显示删除按钮。

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView 
       editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {

  NSUInteger row = [indexPath row];
  NSUInteger count = [posts count];

  if (row < count) {
    return UITableViewCellEditingStyleDelete;
  } else {
    return UITableViewCellEditingStyleNone;
  }
}

当用户在轻扫TableViewCell时删除一行时会调用此方法,并且在点击删除按钮时将删除刷过的行。

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

  NSUInteger row = [indexPath row];
  NSUInteger count = [posts count];

  if (row < count) {
    [posts removeObjectAtIndex:row];
  }
}

最后调用此方法以在删除行后更新表视图。

- (void)tableView:(UITableView *)tableView 
                   didEndEditingRowAtIndexPath:(NSIndexPath *)indexPath {

  [self updateViewTitle];
  [tableView reloadData];
}