UITableView - 删除行后选择最近的行

时间:2010-05-31 03:21:56

标签: iphone objective-c cocoa-touch uitableview uisplitviewcontroller

就像在apple notes app中构建一样,在您滑动删除所选行后,它会自动选择最近的可用行。

逻辑应该是:

  

如果行数> 0然后   如果deleted_row ==最后一行则为
  选择deleted_row_index-1 row
  否则
  选择deleted_row_index + 1行
  结束
  结束

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

任何想法?

2 个答案:

答案 0 :(得分: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];
}

答案 1 :(得分:0)

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

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

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

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

毕竟,您手动选择UITableViewCell。

[cell setSelected:YES];