Функция iPhone selectRowAtIndexPath не работает в UITableView, когда элемент находится за пределами экрана - PullRequest
0 голосов
/ 12 января 2010

Работает нормально, когда выбранная ячейка видна в области прокрутки. Если он не находится в видимой области прокрутки, он никогда не загружался через cellForRowAtIndexPath и не выбирается. И не прокручивается до. Что с этим?

Это на симуляторе iPhone 3.1.2.

Спасибо, Том.

Ответы [ 2 ]

0 голосов
/ 17 мая 2014

Если кто-то сталкивается с той же проблемой и не может понять, что говорит этот парень, вот моя интерпретация:

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.

Приветствие.

0 голосов
/ 12 января 2010

да, я понял, это потому, что эта функция не вызывалась, поэтому я не устанавливал выбранный индекс. Facepalm.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...