UITableView滚动到不同设备上的行

时间:2014-04-09 12:11:31

标签: ios iphone objective-c uitableview viewdidload

我遇到了某种错误(我猜)...在获取并执行其他操作后的viewDidLoad:中,我将UITableView滚动到最近的日期。我使用这个方法,但基本上就是调用scrollToRowAtIndexPath:atScrollPosition:animated:。从按钮操作或重新加载UITableView后调用此方法时,一切都运行正常......但

当我在iPhone 4S(真实设备)上运行thsis应用程序时,它不会将我滚动到viewDidLoad中的这一行,但会列出我已正确执行此方法!更重要的是,当我在模拟器(5或5S)中运行时,一切都像魅力一样!当我在iPhone 4模拟器中运行时,此代码甚至不起作用...为什么?有什么样的chanange需要确定我使用的设备是什么?

2 个答案:

答案 0 :(得分:1)

我建议看两个选项:

1)您应该将滚动逻辑移至viewDidLoadviewDidAppear

,而不是after some delay

2)处理此代理,并在加载所需的单元格后滚动到其位置:

- (void)tableView:(UITableView *)tableView didEndDisplayingCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath*)indexPath NS_AVAILABLE_IOS(6_0)
{
    if(indexPath.row == someFutureDateRowNumber)
    {
          // TODO : do scrolling here.
    }   
}

答案 1 :(得分:0)

请在延迟后尝试拨打scrollToRowAtIndexPath:atScrollPosition:animated:。您可以使用- (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay;