Если кто-то сталкивается с той же проблемой и не может понять, что говорит этот парень, вот моя интерпретация:
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
.
Приветствие.