Я пытаюсь реализовать ячейки таблицы переменной высоты, и то, что я думаю, будет элегантным решением, превратившимся в переполнение стека / рекурсии:
- (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:
?