Как получить целевую ячейку таблицы внутри tableView: heightForRowAtIndexPath :? - PullRequest
2 голосов
/ 28 октября 2010

Я пытаюсь реализовать ячейки таблицы переменной высоты, и то, что я думаю, будет элегантным решением, превратившимся в переполнение стека / рекурсии:

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

    MyCustomCell *cell = (MyCustomCell *)[aTableView cellForRowAtIndexPath:indexPath];

    return [cell heightForObject:...]; // passing data object on indexPath
}

Все метки ячеек таблицы и другие свойства представления инициализируются во время создания (обычным tableView:cellForRowAtIndexPath: способом). Таким образом, моя идея состояла в том, чтобы я мог перенести вычисление с определенной высотой из контроллера таблицы в свою собственную реализацию ячейки, как это. Я мог бы использовать ту же самую ячейку в других контроллерах таблиц без какого-либо дублирования кода. heightForObject: может посмотреть на его подпредставления, какие шрифты они используют и построить из этого значение высоты. Черт, я мог бы даже изменить размеры шрифта для определенных меток ячеек, и они должны теоретически корректно обновлять свою высоту.

Так как уже упоминалось - я столкнулся с проблемой переполнения стека с этим кодом. Как мне получить ту целевую ячейку, для которой вызывается tableView:heightForRowAtIndexPath:?

1 Ответ

0 голосов
/ 18 ноября 2010

То есть вы хотите получить выделенную ячейку?

Затем напишите:

UITableViewCell *actCell = [self.tableView cellForRowAtIndexPath:
                                           [self.tableView indexPathForSelectedRow]];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...