Повторно используйте UITableViewCell (настроенную высоту для каждого) в клиенте, похожем на Twitter - PullRequest
4 голосов
/ 25 февраля 2012

Я работаю над таким проектом, как твиттер-версия клиента iOS.При разработке табличного представления каждая ячейка изменяет высоту, чтобы приспособить ее содержимое (твит).

Но я столкнулся с проблемой: высота ячейки текущего экрана работает хорошо, но при прокрутке вниз новая ячейка повторно использует высотустарые клетки.

1 Ответ

3 голосов
/ 25 февраля 2012

Да, при программировании таблиц подход модель-представление-контроллер действительно оказывается полезным.Если вы измените высоту своей ячейки где-то вроде tableView:didDeselectRowAtIndexPath:, вы можете почувствовать, что это работает, но это не так.В этом методе вы можете изменить данные и перезагрузить таблицу (или ее часть).

Как уже упоминалось в комментариях выше, вам необходимо:

Предоставить правильную высоту для каждогоячейка в

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

Обеспечить правильное представление (ячейка) в

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

Когда вы хотите внести некоторые изменения, вы должны изменить свои данные в model (или соответствующем объекте, содержащем ваше содержимое).связанных данных), а затем вызовите один из UITableView's reload методов, возможно:

- (void)reloadData
- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation

Документация Apple может быть недостаточной (хотя я думаю, что она довольно профессиональная): это будут основные ссылки для вас:

Ссылка на класс UITableView

Ссылка на протокол UITableViewDataSource

Ссылка на протокол UITableViewDelegate

Руководство по программированию табличного представления для iOS

...