我遇到了某种错误(我猜)...在我的 viewDidLoad:
中,在获取并执行其他操作后,我将 UITableView
滚动到最近的日期在未来。为此,我使用了我的方法,但基本上它变成了调用 scrollToRowAtIndexPath:atScrollPosition:animated:
。当我从按钮操作或 UITableView
重新加载后调用此方法时,一切正常,但是...
当我在 iPhone 4S(真实设备)上运行这个应用程序时,它不会将我滚动到 viewDidLoad
中的这一行,但会告诉我这个方法已正确执行!更重要的是,当我在模拟器(5 或 5S)中运行它时,一切都像魅力一样!当我在 iPhone 4 模拟器中运行此代码时,此代码甚至无法运行...为什么?是否有某种变化需要确定我使用的是哪种设备?
最佳答案
我建议看一下两个选项:
1) 而不是 viewDidLoad
你应该将你的滚动逻辑移动到 viewDidAppear
或 after some delay
2) 处理这个委托(delegate),一旦加载了所需的单元格,就滚动到它的位置:
- (void)tableView:(UITableView *)tableView didEndDisplayingCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath*)indexPath NS_AVAILABLE_IOS(6_0)
{
if(indexPath.row == someFutureDateRowNumber)
{
// TODO : do scrolling here.
}
}
关于ios - UITableView 滚动到不同设备上的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22962137/