我想处理当用户通过点击此行取消选择行(已选择)时的情况。众所周知,在这种情况下未调用tableView:willDeselectRowAtIndexPath:
/ tableView:didDeselectRowAtIndexPath:
委托方法:仅当您点击其他未选中的行时才会调用它们(我的表格视图具有单一选择模式)。
tableView:didSelectRowAtIndexPath:
方法也没有被调用。
有没有简单的解决方案?
更新
问题出在tableView:willSelectRowAtIndexPath:
方法中,在某些情况下,我返回nil
,这就是tableView:didSelectRowAtIndexPath:
没有调用的原因。感谢@Nekto提供有用的信息和帮助。
答案 0 :(得分:1)
我有这样的用例。为什么你不为lastSelectedRow
创建一个变量(这里我有问题NSIndexPath
并且我使用了两个整数)和选择行的方法只需比较currentSelectedRow
和{{ 1}}。
答案 1 :(得分:1)
答案 2 :(得分:0)
Apple docs接着谈到- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
当表的编辑属性设置为YES(即表视图处于编辑模式)时,不会调用此方法。
这意味着应该调用此方法,除非您的代码有错误或者您没有更新{1}}表格视图或表格处于编辑模式。
可能存在的问题之一可能是您错误地实施了delegate
并且正在为所选行返回- (NSIndexPath *)tableView:(UITableView *)tableView willDeselectRowAtIndexPath:(NSIndexPath *)indexPath
。在这种情况下,nil
不会被调用:
如果您不想取消选择该行,则返回nil。
或者,您可以实现另一个表视图委托方法:didSelect...
:
告诉委托,突出显示已从指定索引路径的行中删除。
详细了解如何管理表格视图中的选择here。