2011-01-07 2 views
1

В моих приложениях я создал представление таблицы и отобразил изображения и метки в виде таблицы. Я загрузил изображение и установил высоту изображения в другой класс, и я передал значение высоты изображения с помощью делегатов. В моей проблеме метод heightForRowAtIndexPath вызывает вызов очень раньше, и он никогда не вызывает снова. Итак, как я установил высоту ячейки, зависит от высоты изображения?Как установить высоту ячейки как динамически в iPhone?

//appDelegate.imageHeight - Значение делегата высоты изображения.

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

NSLog(the height of the image is --------------------------%f, appDelegate.imageHeight); 
In Console: 
    the height of the image is --------------------------0.000000 
    the height of the image is --------------------------0.000000 
    the height of the image is --------------------------0.000000 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    NSLog(the height of the image is --------------------------%f, appDelegate.imageHeight); 
    In Console: 

     the height of the image is --------------------------98.567039 
     the height of the image is --------------------------300.000000 
     the height of the image is --------------------------232.288406 
} 

Можно ли назвать метод height для RowAtIndexPath внутри метода cellForRowAt. Поскольку я установил размер кадра ячейки, а высота зависит от высоты изображения. Итак, как я могу установить высоту ячейки, зависит от высоты изображения ?, пожалуйста, направляйте меня.

Спасибо!

+1

Я пытаюсь добавить подобное поведение в приложение; нашел этот пост, который может иметь решение? - ответ на вызов [tableView beginUpdates]; и [tableView endUpdates] выглядит многообещающим? : http://stackoverflow.com/questions/460014/can-you-animate-a-height-change-on-a-uitableviewcell-when-selected – petert

ответ

1

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

+0

Спасибо за ответ. Но значения высоты изображения попадают только в метод cellForRowAtIndexPath. Если я создаю словарь или массив, то как я могу передать эти значения в метод heightForRowAtIndexPath? так можно вызвать «heightForRowAtIndexPath» внутри метода cellForRowAtIndex или какие-то другие решения? Благодарю. – Pugal

+0

Как возможно, что все, что вы делаете для вычисления высоты изображения в cellForRowAtIndex, не может быть сделано в момент появления вашего представления? Скажите, как вы получаете свои изображения? через парсинг или что-то еще? и что на самом деле вы делаете в пути cellForRowAtIndex? –

+0

Да, Nanda, я использовал библиотеку Async для импровизации ленивой загрузки. Значения высоты изображения передаются другому классу, так что значения высоты изображения получают только прокрутки ячейки таблицы, т. Е. Метод cellForRowAtIndex. Благодаря! – Pugal

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