Проблема с обновлением UITableViewCells при вращении UITableView

У меня есть UILabel в пользовательском UITableViewCell, размер которого изменяется при повороте устройства. Текст в этой метке необходимо пересчитать после поворота, потому что я сокращаю его до размера и добавляю текст в конце.

Например, Я могу получить доступ к видимым UITableViewCells и обновить описания.

Проблема, похоже, в том, что есть UITableViewCells, которые кэшированы, но я не могу добраться до них. Когда я прокручиваю UITableView после поворота, одна или две ячейки, которые находятся ниже видимой области после поворота, не имеют правильного текста в метке. Таким образом, они не были отрисованы через (UITableViewCell *) tableView: (UITableView *) tableView cellForRowAtIndexPath: (NSIndexPath *) indexPath - но они не были возвращены [tableView visibleCells] (или через цикл через все представления, возвращенные через [tableView subViews]).

Я пытался получить доступ к «лишним» ячейкам с помощью этого метода:

for (int index=max + 1; index < max + 3 && index < [cellTypes count]; index++) {
    NSIndexPath *updatedPath = [NSIndexPath indexPathForRow:index inSection:0];
    UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:updatedPath];
    if (cell == nil) { continue; }
    [self updateCellForRotate:cell forRow:index];
}

(где max - самая большая строка, возвращаемая из visibleCells), но ячейка всегда равна нулю.

Есть ли способ очистить кеш UITableViewCells, чтобы они не использовались повторно? Или получить к ним доступ, чтобы я мог их обновить?

Спасибо!

5
задан Michael Kernahan 8 September 2010 в 18:33
поделиться