3

就像在苹果笔记应用程序中构建一样,在您滑动删除所选行后,它会自动选择最近的可用行。

逻辑应该是:

如果行数 > 0 那么如果 deleted_row == 最后一行 然后
选择 deleted_row_index-1 行
否则
选择 deleted_row_index+1 行
end
end

我尝试在commitEditingStyle事件中实现上述逻辑,但选择失败。selectRowAtIndexPath
逻辑在此事件 中不起作用,如果我将它应用到按钮中,它会起作用。

任何想法?

4

2 回答 2

3

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

从内部tableView:commitEditingStyle:forRowAtIndexPath:您可以:

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

然后selectRowAtIndexPath:在视图控制器中定义方法

- (void)selectRowAtIndexPath:(NSIndexPath *)indexPath {
  [self.tableView selectRowAtIndexPath:indexPath 
                              animated:YES 
                        scrollPosition:UITableViewScrollPositionTop];
}
于 2011-09-03T14:41:35.623 回答
0

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

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

对于 indexPath,您可以通过将 indexPath.row 增加或减少 1 来设置新的 indexPath。

scrollPosition 设置tableView是向上还是向下滚动,动画要清晰。

毕竟,您手动选择了那个 UITableViewCell。

[cell setSelected:YES];
于 2010-06-04T16:50:52.820 回答