当要在滚动区域中看到要选择的单元格时,它可以正常工作。如果它不在当前可见的滚动区域中,则它从未通过cellForRowAtIndexPath加载,并且它未被选中。而且没有滚动到。怎么了?
这是在iPhone 3.1.2模拟器上。
谢谢, 汤姆。
答案 0 :(得分:0)
哦,我知道了,这是因为没有调用该函数所以我没有设置所选索引。捂脸。
答案 1 :(得分:0)
如果有人面临同样的问题并且无法弄清楚这个人说的话,这是我的解释:
cellForRowAtIndexPath
仅针对可见项目调用,因此当您要通过viewDidLoad
在selectRowAtIndexPath
中选择屏幕外项目时,这些项目未正确初始化。
我这样砍了它:
[ self.tableView scrollToRowAtIndexPath:[self indexPathForSelectedItem] atScrollPosition:UITableViewScrollPositionMiddle animated:NO ];
double delayInSeconds = 0.1;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
[self.tableView selectRowAtIndexPath:[self indexPathForSelectedItem] animated:NO scrollPosition:UITableViewScrollPositionNone];
});
我需要0.1秒的延迟来等待项目初始化..我知道这不是最漂亮的解决方案,但它确实有效。
如果有人有更好的想法,我很乐意摆脱这个dirty hack
。
干杯。