Как изменить высоту uitableviewcell после tableView.reloadData - PullRequest
13 голосов
/ 16 марта 2011

Я работаю над клиентом, похожим на твиттер, и UITableView предлагает просмотр списка сообщений. Для каждой ячейки может потребоваться загрузка изображения динамического размера, а изображение загружается асинхронно. Таким образом, размер изображения неизвестен при загрузке таблицы.

Возможно ли обновить высоту uitableviewcell после загрузки изображения.

Насколько мне известно, единственный способ обновить высоту - это метод: - (CGFloat) tableView: (UITableView *) tableView heightForRowAtIndexPath: (NSIndexPath *) indexPath Но он вызывается только при первой загрузке данных. Это разумно с точки зрения производительности. В любом случае, есть ли способ изменить высоту позже?

Спасибо за любую информацию!

Наконец, я использовал reloadRowsAtIndexPaths для обновления отдельных строк, вы можете попробовать это для скрытых ячеек.

[self.tableView beginUpdates];
[self.tableView reloadRowsAtIndexPaths:toReloadRows withRowAnimation: UITableViewRowAnimationNone];
[self.tableView endUpdates];

Но при обновлении высоты видимых ячеек ячейка дрожит. Так что лучше рассчитать высоту ячейки раньше.

Ответы [ 3 ]

27 голосов
/ 26 марта 2011

Попробуйте вызвать пустой блок обновления:

[self.tableView beginUpdates];
[self.tableView endUpdates];

Это похоже на работу с видимыми ячейками.Я все еще борюсь со скрытыми клетками.

4 голосов
/ 16 марта 2011

heightForRowAtIndexPath: фактически вызывается снова, когда вы выполняете reloadData (вы можете установить точку останова для проверки).Все, что вам нужно сделать, это поместить туда условную логику, в которой вы нуждаетесь.

0 голосов
/ 16 марта 2011
[tableView reloadData];

будет делать то, что ты хочешь.Это перезагрузит всю таблицу datasource.Таким образом, вы можете установить rowHeight соответственно

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