#ios #uitableview
Доброе время суток коллеги! Столкнулся с такой задачей. Необходимо выводить информацию в UITableView в два кастомных UITableViewCell. верхний как бы заголовок, нижний текст с произвольной высотой. Если кликать на заголовок необходимо попадать на профиль пользователя, если кликать на текст попадать на полный текст статьи. Пример реализации которая мне нужна хорошо выполнен в приложении ВКонтакте для iphone, в разделе группы. У меня не получается вывести данные в два UITableViewCell по очереди. https://www.dropbox.com/s/g1g6btk4zudrhr1/screen.pdf В приложенном файле я нарисовал прототип того как должен выглядеть табличный вид на мобильном телефоне. Если кто сталкивался или знает как это можно реализовать прощу помочь.
Ответы
Ответ 1
После обсуждения этого вопроса с его автором в скайпе мы совместно выяснили, что оба вида ячеек на самом деле относятся к одной сущности (пользователю и контенту, связанному с ним) и решили, что нужно, чтобы был создан только один тип ячейки, в которую контент нынешних двух типов ячейки войдет в виде двух subviews - один subview для заголовка ячейки (информация о пользователе), другой - для контента (сообщение пользователя). Главная же проблема скрывалась в том, что из-за наличия двух видов ячеек, автор, полагаясь на строку вида EXHeaderTableCell *headerCell = [tableView dequeueReusableCellWithIdentifier:HeaderCellIdentifier forIndexPath:indexPath]; получал неправильное обращение к индексу в массиве Reusable cells, так как indexPath в большинстве случаев указывал на ячейку противоположного типа.Ответ 2
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellPersonIdentifier = @"CellPersonIdentifier"; static NSString *CellDataIdentifier = @"CellDataIdentifier"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:(indexPath.row % 2 == 0 ? CellPersonIdentifier : CellDataIdentifier)]; if (cell == nil) { NSArray *nib = [[NSBundle mainBundle] loadNibNamed:(indexPath.row % 2 == 0 ? @"CellPerson" : @"CellData") owner:self options:nil]; cell = [nib objectAtIndex:0]; } // далее заполняешь ячейки данными }
Комментариев нет:
Отправить комментарий