我有一个包含许多单元格的表格视图。当我添加一个新单元格(使用模态视图控制器)时,我想向用户展示新添加的单元格。为此,我想将表格视图滚动到新单元格,选择它并立即取消选择它。
现在,我在deselectRowAtIndexPath
定时间隔后向我的表格视图发送一个:
- (IBAction)selectRow
{
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:7 inSection:0];
[self.tableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionTop];
[self performSelector:@selector(deselectRow:) withObject:indexPath afterDelay:1.0f];
}
- (void)deselectRow:(NSIndexPath *)indexPath
{
[self.tableView deselectRowAtIndexPath:indexPath animated:YES];
}
我想知道是否有更好的方法来做到这一点。它工作得很好,但我不喜欢依靠静态计时器来执行有时可能需要不同时间的操作(例如,如果表很长)。
编辑:请注意,这selectRowAtIndexPath:animated:scrollPosition
不会导致UITableView
委托方法被解雇。既tableView:didSelectRowAtIndexPath:
不会也scrollViewDidEndDecelerating:
不会被调用。从文档:
调用此方法不会导致委托接收
tableView:willSelectRowAtIndexPath:
或tableView:didSelectRowAtIndexPath:
消息,也不会向观察者发送UITableViewSelectionDidChangeNotification
通知。