就像在apple notes app中构建一样,在您滑动删除所选行后,它会自动选择最近的可用行。
逻辑应该是:
如果行数> 0然后 如果deleted_row ==最后一行则为
选择deleted_row_index-1 row
否则
选择deleted_row_index + 1行
结束
结束
我尝试在 commitEditingStyle 事件中实现上述逻辑,但选择失败。
selectRowAtIndexPath 逻辑在这个事件中不起作用,如果我在一个按钮中应用它,它就可以工作。
任何想法?
答案 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];