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

时间:2011-11-02 02:25:55

标签: iphone ios uitableview

我正在使用scrollToRowAtIndexPath将我的tableview集中在先前选择的单元格上,但是在手机上测试时它会崩溃应用程序而不是模拟器上的。

这就是我设置的方式

- (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) 

1 个答案:

答案 0 :(得分:4)

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

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

让表格有机会加载。