scrollToRowAtIndexPath在我的tableview被设置之前检查indexpath

我正在使用scrollToRowAtIndexPath将我的tableview放在之前选定的单元格中,但是在手机上testing时崩溃了应用程序,而不是在模拟器上。

这是我如何设置它

- (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; //Center previously selected cell to center of the screen [self.tableView reloadData]; [self.tableView scrollToRowAtIndexPath:oldCheckedIndexPath atScrollPosition:UITableViewScrollPositionMiddle animated:NO]; } 

这是它给的错误

  *** Terminating app due to uncaught exception 'NSRangeException', reason: '-[UITableView scrollToRowAtIndexPath:atScrollPosition:animated:]: section (0) beyond bounds (0).' *** First throw call stack: (0x31fe88bf 0x31d581e5 0x31fe87b9 0x31fe87db 0x32b6df1f 0x29bef 0x32ae26b5 0x32b3daf1 0x32afed21 0x32afea71 0x32afe78b 0x32afe4ff 0x32ab581b 0x32abafb9 0x3193aba7 0x3273be8d 0x31fbb2dd 0x31f3e4dd 0x31f3e3a5 0x3204afed 0x32ace743 0x34f5 0x2f70) terminate called throwing an exception(gdb) 

事情是我设定的

 [self.tableView reloadData]; [self.tableView scrollToRowAtIndexPath:oldCheckedIndexPath atScrollPosition:UITableViewScrollPositionMiddle animated:NO]; 

在不同的方法应用程序工作正常,但不滚动到索引位置..我不知道如何解决它。

更新尝试延迟scrollToRowAtIndexPath时出现新的错误

 2011-11-02 16:00:58.180 code[2303:707] -[VehicleResultViewController methodThatCallsScrollToRow]: unrecognized selector sent to instance 0x1f3410 2011-11-02 16:00:58.184 code[2303:707] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[VehicleResultViewController methodThatCallsScrollToRow]: unrecognized selector sent to instance 0x1f3410' *** First throw call stack: (0x31fe88bf 0x31d581e5 0x31febacb 0x31fea945 0x31f45680 0x35bef943 0x31fbca63 0x31fbc6c9 0x31fbb29f 0x31f3e4dd 0x31f3e3a5 0x3204afed 0x32ace743 0x34a9 0x2f24) terminate called throwing an exception(gdb) 

您可能不需要重新加载数据 – 延迟后运行scrollToRowAtIndexPath:

[self performSelector:@selector(methodThatCallsScrollToRow)withObject:nil afterDelay:2.5];

给表格一个加载的机会。