2

喜欢在苹果笔记应用程序中生成,在您滑动删除选定的行后,它会自动选择最近的可用行。UITableView - 在行删除后选择最近的行

逻辑应该是:

如果行计数> 0,那么如果 == deleted_row最后一行然后
选择deleted_row_index-1行
别的
选择deleted_row_index + 1行

end

我已尝试实施ab在commitEditingStyle事件中,但选择失败。
selectRowAtIndexPath逻辑在这个事件中不起作用,如果我将它应用在按钮中,它就可以工作。

有什么想法吗?

回答

3

解决此问题的一种方法是使用方法performSelector:withObject:afterDelay:

tableView:commitEditingStyle:forRowAtIndexPath:你可以在:

NSIndexPath *indexPathToSelect = ... 
[self performSelector:@selector(selectRowAtIndexPath:) 
      withObject:indexPathToSelect 
       afterDelay:0]; 

然后在您的视图控制器

- (void)selectRowAtIndexPath:(NSIndexPath *)indexPath { 
    [self.tableView selectRowAtIndexPath:indexPath 
           animated:YES 
         scrollPosition:UITableViewScrollPositionTop]; 
} 
+0

感谢罗伯特定义selectRowAtIndexPath:方法!你的解决方案如此简单和优雅! – sunnycmf 2011-09-04 08:20:42

0

当你删除一行时,你应该有它的indexPath。然后调用方法

(void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated

对于indexPath可以设置新indexPath,通过增加或1

的scrollPosition降低indexPath.row设置的tableView向上或向下滚动是否和动画应该清楚。

毕竟,您手动选择该UITableViewCell。

[cell setSelected:YES];