UITableViewCell 删除按钮没有出现

Posted

技术标签:

【中文标题】UITableViewCell 删除按钮没有出现【英文标题】:UITableViewCell delete button not appearing 【发布时间】:2013-03-18 02:37:00 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

我最终想通了。我选择这个答案是因为您需要做的就是实现这两种方法并且它可以工作。我已经实现了这两种方法,但是删除按钮隐藏在 JASidePanel 的中心面板控制器下面......我只需要缩小 tableview 的宽度,它就出现了...... @AFraser - 实际上,您的评论帮助我回答了我自己的问题,因为我的问题非常相似(主视图的右侧(在自定义拆分视图控制器中)被详细视图遮挡)。我当然建议将其作为答案,因为您的问题确实提到了 JASidePanel 控制器。【参考方案2】:

你试过这个类自己的删除单元格的方法吗?

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

   if (UITableViewCellEditingStyleDelete) 
      int k = [[tempArray objectAtIndex:indexPath.row] intValue];

      //Remove object from index 'k'.
   

也许对你有帮助。

谢谢。

【讨论】:

【参考方案3】:

在滑动 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];

【讨论】:

以上是关于UITableViewCell 删除按钮没有出现的主要内容,如果未能解决你的问题,请参考以下文章

是否可以以编程方式在 UITableViewCell 上显示红色删除按钮?

默认 UITableViewCell 状态

出现删除按钮时重新计算自定义 UITableViewCell 的高度

从 UITableViewCell 隐藏删除按钮

为 UITableViewCell 上的特定按钮删除 UIButton 事件的链接

编辑自定义 UITableViewCell 时不出现插入/删除编辑控件