我试过了:
- (IBAction)openSearch {
[tblSimpleTable scrollRectToVisible:CGRectMake(0, 0, 1, 1) animated:YES];
[searchBar becomeFirstResponder];
}
和
- (IBAction)openSearch {
[self.tblSimpleTable scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:YES];
[searchBar becomeFirstResponder];
}
让表格滚动到顶部。当表仅略微滚动离开顶部但是以“超出界限”错误崩溃时,两者都工作。
任何想法。我对此很新。感谢。
- 编辑 -
感谢您的反馈。这是精确的错误
2010-02-15 00:49:02.010 MyApp [2935:207] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[NSCFArray objectAtIndex:]: index (0) beyond bounds (0)'
2010-02-15 00:49:02.016 MyApp [2935:207] Stack: (
861696817,
860329709,
861252493,
861252395,
845801683,
845954223,
30161,
835250561,
835249847,
834989551,
834983899,
834971003,
805539851,
805539363,
805538115,
805537449,
805560369,
861158231,
861448761,
861447005,
861059891,
861060063,
834770799,
834765939,
10065,
9980
)
terminate called after throwing an instance of 'NSException'
Program received signal: “SIGABRT”.
手动滚动时,我没有遇到此问题。该表由NSMutableArray填充。这有帮助吗?
答案 0 :(得分:1)
这些都不会导致自身崩溃,因此您的崩溃是滚动的副作用,而不是您粘贴的代码的直接结果。知道你所看到的确切错误会有所帮助,但可能的原因是你有一个NSArray并且你试图得到一个索引太大的元素(或者可能是负数)。您的表视图的委托或数据源方法之一可能是崩溃的直接原因,并且滚动只是相关的,因为它会导致错误表现出来。
答案 1 :(得分:0)
也许有点软糖但是如果我先清理桌子就行了:
searching=YES;
[tblSimpleTable reloadData];
[tblSimpleTable scrollRectToVisible:CGRectMake(0, 0, 1, 1) animated:YES];
for searching = yes表格设置为重新加载并清空数组。我想我可以在这样做之后重新填充表格,但在这种情况下我并不需要。我认为这个问题与表格单元格在进入视图时重新绘制以节省内存有关。
无论如何 - 对于有相同问题的人:使用空数组重新加载表,滚动到顶部,使用旧数组重新加载表。希望这可以帮助。也许有人会想出更好的方法来做到这一点。