2009-08-10 6 views
0

Okidoke. Вот моя проблема: у меня есть серия сложных UITableViewCells, созданная для отображения новостей из ленты новостей (зевая). То, что я хочу, - это изменение фонового изображения ячейки и высоты на выбор (в качестве средства обозначения того, что история была прочитана).Перезагрузка UITableViewCell по выбору

Теперь, перед настройкой dequeueing, я смог сделать это с помощью простой [self.tableView reloadData]. Кажется, что это не гонка с перегруженными ячейками; перезагрузка представления таблицы не перерисовывает ячейки в соответствии с их измененным состоянием.

Я пробовал reloadRowsAtIndex- и пока это работает - красиво - для первой ячейки, на которую пользователь нажимает, после этой точки она становится неуловимой: иногда ядро ​​перезагружается правильно, иногда нет.

Очевидно, что каждая история является объектом NSMutableDictionary. Я использую объект NSNumber для отслеживания того, прочитана ли история.

Я бы опубликовал код, и я буду, если кто-нибудь спросит, но я ищу универсальное решение, которое может быть реализовано в любом UITableViewController (поделитесь любовью).

Итак, просто введите: как надежно перерисовать сложные ячейки при выборе?

ответ

0

Попробуйте дать каждой ячейке уникальный идентификатор для того, чтобы извлечение из работы, ваши клетки должны возвращаться с их измененных состояний, если вы используете уникальный идентификатор для каждой ячейки, так 20 клеток = 20 идентификаторами, надеюсь, что это помогает

0

Если у вас есть путь индекса, вы можете получить доступ к ячейке и манипулировать ею напрямую:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    // handle the selection... 

    UITableViewCell *cell = [tableView cellForRowAtIndexPath: indexPath]; 
    if (nil != cell) { 
    // 
    // now update the cell to reflect the new state 
    // 
    } 
} 
+0

Спасибо, Даниил и dmercredi - оба. Я нашел место для каждого из ваших решений в разных местах своего приложения. – nzeltzer

Смежные вопросы