我有一个实现UITableViewDelegate和UITableViewDataSource的NSObject类(“Reel”),并且有一个名为reelView的UITableView属性:
@property (nonatomic, weak) IBOutlet UITableView *reelView;
在我的主视图控制器(“MainVC”)中,我有一个由Reel控制的UITableView,表格显示正常。
但是当我尝试以编程方式滚动到特定行时,我会得到不同的结果,具体取决于我调用该方法的位置。
如果我自己调用该方法:
- (void)spin:(id)sender {
[self.reelView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:15 inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:YES];
}
没有任何反应。但是当我在委托方法
中放置完全相同的代码行时- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
当选择表中的行时执行,然后表格按照我期望的方式滚动。要清楚,我不是在打电话:
[tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:15 inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:YES];
但是
[self.reelView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:15 inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:YES];
在委托方法中。
它在模拟器和实际iPad上的行为方式相同。
有什么想法吗?