我遇到了某种错误(我猜)...在获取并执行其他操作后的viewDidLoad:
中,我将UITableView
滚动到最近的日期。我使用这个方法,但基本上就是调用scrollToRowAtIndexPath:atScrollPosition:animated:
。从按钮操作或重新加载UITableView
后调用此方法时,一切都运行正常......但
当我在iPhone 4S(真实设备)上运行thsis应用程序时,它不会将我滚动到viewDidLoad
中的这一行,但会列出我已正确执行此方法!更重要的是,当我在模拟器(5或5S)中运行时,一切都像魅力一样!当我在iPhone 4模拟器中运行时,此代码甚至不起作用...为什么?有什么样的chanange需要确定我使用的设备是什么?
答案 0 :(得分:1)
我建议看两个选项:
1)您应该将滚动逻辑移至viewDidLoad
或viewDidAppear
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;