1

我有一些奇怪但只是轻微烦人的行为,其中 aUITableView不在 aUITableViewController中。这是非常基本的,并且全部使用所需的最少方法。在 IB 中,它设置为允许单选、显示触摸选择等。以下操作序列可让您“突出显示”任意数量的行:

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

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

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

4

1 回答 1

0

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

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

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

所以我想我的自定义表格突出显示有点骇人听闻。

于 2013-06-18T08:20:51.293 回答