UITableView和滑动删除允许突出显示多行

时间:2013-06-17 14:36:47

标签: ios uitableview

我有一些奇怪但只有轻微烦人的行为UITableView不在UITableViewController内。这是非常基础的,并且都采用了所需的最小方法。在IB中,它设置为允许单选,显示触摸选择等。 以下操作序列允许您“突出显示”任意数量的行:

  • 选择一行。
  • 滑动以删除任何行。
  • 点击任意位置以关闭删除操作。
  • 选择与第一行不同的行。

现在,您将突出显示两行,此过程可以重复,直到选中所有行。

为什么这可能/我错过了什么?解除删除选项后,不会调用didDeselectRowAtIndexPath。 :/

1 个答案:

答案 0 :(得分:0)

好的,快速阅读所有文档让我得到答案。虽然滑动删除并不是明显地取消选择我的行(由于tableView:didSelectRowAtIndexPath:中的代码应用我想要的突出显示并且tableView:didDeselectRowAtIndexPath:中的代码将其删除),但是通过将nil指定为nil将其从选定的行中删除indexPathForSelectedRow。这是因为,如文档中所述,当表处于编辑模式时,不会发送这些调用,我只能假设整个表在滑动到删除期间。 看到该行实际上被取消选中,我需要做的就是删除我的自定义突出显示,所以我这样做了:

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

    NSIndexPath *selectedIndex = self.cardsTable.indexPathForSelectedRow;
    if (selectedIndex != nil) {
        [self tableView:self.cardsTable didDeselectRowAtIndexPath:selectedIndex];
    }
}

所以我猜我的自定义表突出显示有点hackish。