Форум программистов, компьютерный форум CyberForum.ru

Objective-C

Войти
Регистрация
Восстановить пароль
 
vitalik_a
4 / 4 / 1
Регистрация: 11.09.2014
Сообщений: 81
#1

Как наполнять UITableView ячейками разной высоты? - Objective-C

30.09.2014, 10:46. Просмотров 886. Ответов 3
Метки нет (Все метки)

у меня в приложении есть класс DomainNewsTableViewController : UITableViewController

в методе viewDidLoad я загружаю с сайта данные в массив объектов NSMutableArray, со свойствами типа NSString - это заголовки и даты новостей

в методе tableView:cellForRowAtIndexPath: я беру из массива объектов соответствующий индексу объект и создаю UILabel, который добавляю в ячейку

ячейки получаются разной высоты в зависимости от текста

Вопрос: Как определить высоту строки таблицы в tableView:heightForRowAtIndexPath: если ячейка ещё не создана?

Добавлено через 6 минут
Пока придумал два варианта:
1. Временно создавать UILabel в tableView:heightForRowAtIndexPath: только для того чтобы узнать его высоту. В этом не нравится то что этот же код будет выполняться ещё раз в tableView:cellForRowAtIndexPath:
2. Создавать UILabel сразу при загрузке данных с сайта и хранить их все в массиве вместо NSString.

Добавлено через 2 минуты
Во втором варианте кажеться неправильным хранить в памяти много объектов интерфейса которых уже нет на экране.

Добавлено через 17 минут
И ещё вопрос: если на сайте очень много новостей с картинками и по мере прокрутки таблицы я буду подгружать из в массив NSMutableArray не станет ли он слишком большим для хранения в оперативной памяти?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.09.2014, 10:46     Как наполнять UITableView ячейками разной высоты?
Посмотрите здесь:

Как при дозагрузке данных показать UIActivityIndicatorView внизу UITableView? - Objective-C
Есть UITableViewController, в tableView: willDisplayCell: forRowAtIndexPath: если это последняя строка таблицы я в фоновом потоке вызываю...

Как сделать асинхронную загрузку картинок в UITableView не останавливая главный поток? - Objective-C
Точнее как показать асинхронно загруженные картинки не останавливая главный поток? Есть UITableViewController, по мере появления ячеек...

UITableView Section - Objective-C
Доброго времени суток. Вопрос состоит в следующем. Есть таблица в стиле Grouped. Есть одна секция с тремя ячейками и в footer есть...

UITableView - footer не уходит за экран - Objective-C
Всем привет! Есть проблема с проектом: дали исходник, и на одном из нескольких контроллеров у tableview после загрузки loadmore не уходит...

Исчезает разделитель при скролле UITableView - Objective-C
При скролле вверх разделитель исчезает Есть способ исправить это?

Дозагрузка данных в UITableView при скролле - Objective-C
С веб-сервиса загружаю порцию данных, отображаю их на UITableViewController. Как после прокрутки до последней записи загрузить еще одну...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
noname_club
102 / 90 / 9
Регистрация: 01.05.2013
Сообщений: 583
30.09.2014, 10:52     Как наполнять UITableView ячейками разной высоты? #2
с картинками и по мере прокрутки таблицы я буду подгружать из в массив NSMutableArray не станет ли он слишком большим для хранения в оперативной памяти
SDWebImage
vitali36
7 / 7 / 2
Регистрация: 09.02.2014
Сообщений: 91
30.09.2014, 14:36     Как наполнять UITableView ячейками разной высоты? #3
Нужно взять и переопределить метод делегата UITableViewDelegate tableView:heightForRowAtIndexPath
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.10.2014, 02:15     Как наполнять UITableView ячейками разной высоты?
Еще ссылки по теме:

Изменение высоты UITableViewCell - Objective-C
Нужно сделать таблицу, ячейки которой при нажатии расширяются по высоте и меняют положение картинки и текста как на картинке. Почитал про...

Таблица с ячейками разной длины - HTML, CSS
<table> <tr> <td></td> <td></td> <td></td> </tr> <tr> <td></td> ...

Списки li разной высоты - HTML, CSS
Добрый день! Помогите решить проблему с списком. Для того, чтобы выравнять 4 блока решил использовать text-align:justify Но проблема в...

Вертикально подогнать блоки разной высоты - HTML, CSS
Здравствуйте. Имеется такой код: <div class="wrapp"> <div class="div1">div1</div> <div class="div2">div2</div> <div...

Вертикальное выравнивание флоатов разной высоты - HTML, CSS
Подскажите пожалуйста, ибо туплю и гугл настроился против меня. Как выровнять зафлоаченные блоки разной высоты по вертикали (например по...

Сверстать галерею из картинок разной высоты - HTML, CSS
Здравствуйте как сверсатать этот блок макета? Я новичек, придумал только с помощью сеток бутстрапа но мне кажется что это как-то...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
edward_jonson
158 / 158 / 25
Регистрация: 23.02.2011
Сообщений: 392
03.10.2014, 02:15     Как наполнять UITableView ячейками разной высоты? #4
Создайте где-нибудь метод, желательно в классе новостей(если такой есть), типа
Objective-C
1
2
3
4
5
6
7
8
9
+(CGFloat)heightOfNews:(News *)news
{
    CGSize maximumLabelSize = CGSizeMake(310, 1000); // 310 - максимальная ширина лейбла, 1000 - максимальная высота 
    CGRect textRect = [news.content boundingRectWithSize:maximumLabelSize  // news.content - то, что надо отобразить
                                        options:(NSStringDrawingUsesLineFragmentOrigin)
                                     attributes:@{NSFontAttributeName:[UIFont fontWithName:@"System" size:18]} // используемый для новости шрифт
                                        context:nil];
    return textRect.size.height + 140; // 140 - то, что постоянно, суммарная высота отступов и тп
}
который будет возвращать высоту ячейки основываясь на параметрах исходного текста. Соотвественно если лейблов много разных, используйте несколько boundingRectWithSize: ...

А потом в tableView:heightForRowAtIndexPath: будете писать
Objective-C
1
return [News heightOfNews:self.news[indexPath.row]];
Yandex
Объявления
03.10.2014, 02:15     Как наполнять UITableView ячейками разной высоты?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru