UITableView不会滚动到单元格

时间:2010-05-26 06:22:10

标签: iphone objective-c cocoa-touch xcode uitableview

我正在尝试将我的tableview滚动到第二个单元格:

[self.tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:1 inSection:0] 
                                  atScrollPosition:UITableViewScrollPositionNone 
                                           animated:NO];

我收到错误:

 *** Terminating app due to uncaught exception 'NSRangeException', reason: '-[UITableView scrollToRowAtIndexPath:atScrollPosition:animated:]: section (1) beyond bounds (0).

我的tableview有30个单元格,没有任何部分。

4 个答案:

答案 0 :(得分:10)

当我得到一个单节表的相同错误消息时,我通过创建一个包含行和节的NSIndexPath来修复它:

NSIndexPath *ip = [NSIndexPath indexPathForRow:itemCurrentlyPlaying inSection:0];

这不容易找到,但相关的便利构造函数在此处记录:

http://developer.apple.com/iphone/library/documentation/UIKit/Reference/NSIndexPath_UIKitAdditions/Reference/Reference.html

答案 1 :(得分:3)

如果您没有任何部分,那么您可以尝试indexPathWithIndex:类构造函数:

[self.tableView scrollToRowAtIndexPath:[NSIndexPath indexPathWithIndex:1] 
                      atScrollPosition:UITableViewScrollPositionNone 
                              animated:NO];

答案 2 :(得分:2)

与pollyp一样,我可以使用indexPathForRow:inSection:。我是从viewWillAppear:打来的。

看起来您的错误消息表明甚至没有一个部分。您是否可以在加载表格数据之前调用scrollToRowAtIndexPath:atScrollPosition:animated:(例如在viewDidLoad中)?请稍后在viewWillAppear:中调用它。

答案 3 :(得分:0)

我建议您创建一个部分来存储您的单元格。此部分可以没有标题,因此它在视觉上无法区分,这使您获得的是不必与预期的API路径作斗争的能力。