Iphone 将UITableView滚动到有效索引路径会引发错误

Iphone 将UITableView滚动到有效索引路径会引发错误,iphone,objective-c,cocoa-touch,uitableview,Iphone,Objective C,Cocoa Touch,Uitableview,为什么下面的代码会抛出此错误 if ([self.tableView.dataSource numberOfSectionsInTableView:self.tableView] > 0 && [self.tableView.dataSource tableView:self.tableView numberOfRowsInSection:0] > 1) { [self.tableView scrollToRowAtIndexPath:[NSIndexPath

为什么下面的代码会抛出此错误

if ([self.tableView.dataSource numberOfSectionsInTableView:self.tableView] > 0 && [self.tableView.dataSource tableView:self.tableView numberOfRowsInSection:0] > 1) {
    [self.tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:1 inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:NO];
}
投掷

***由于未捕获的异常“NSRangeException”而终止应用程序,原因:'-[UITableView ScrollToRowatineXpath:atScrollPosition:animated:]:超出边界(0)的部分(0)。'


现在已经很早了,但是我被难住了。

试着在您发布的行之前调用
[self.tableView reloadData]


我打赌数据源在表被呈现之后就准备好了,在用数据源中的数据呈现表之前调用
scrollTo…
方法…

我也被难倒了。您确定是调用
ScrollToRowatineXpath:atScrollPosition:animated:
引发错误的吗?肯定。调试器每次都挂在那一行。你在哪里调用这段代码?另一个不相关的旁注:我认为您不需要检查节数是否大于0,因为即使您不显式使用节,所有表都至少有一个节,所以此检查将始终为真。@Nebs我知道,但我想明确说明所有参数都是有效的。这可能是正确的,但我似乎无法接受,因为在加载视图时,表将重新加载两次。听起来我真正需要的是回调我的委托,比如“tableDidReload”。当创建视图时,tableview会自动调用自身的重载数据,那么什么时候会发生这种情况呢?它似乎应该在调用viewDidAppear之前发生,但情况似乎并非如此。我看不到您的所有代码,但我确信您可以将发布的代码放在重新加载数据之后。我敢肯定,在填充数据源后,您会使用
重新加载数据
。。。