UITableView — как прикрутить комментарии к записям?

Доброе время суток! Возникла проблема, в общем, на запрос приходит информация от сервера с структурой:

{
     /* 1 */
     "first_name" : "Alex",
     "last_name" : "Kovalskiy",
     "last_activity" : "2014-03-14 14:03:07" ,
     "photo" : "http://",
     
     /* 2 */
     "comments" : [{
          "id" : "1',
          "message" : "Hello World",
          "profile" : {}
     },
     {
          "id" : "2',
          "message" : "Hello People",
          "profile" : {}
     },
] }


Информацию нужно отобразить в UITableView, где:

/* 1 */ - Информация о пользователе;
/* 2 */ - Информация о комментариях на пользователя

Суть задачи:
Есть таблица, в ней список пользователей в одной ячейке, под каждым из пользователей список комментариев к пользователю, то бишь:

- пользователь 1
     - комментарий 1
     - комментарий 2
     - комментарий 3
- пользователь 2
     - комментарий 1
     - комментарий 2
- пользователь 3
     - комментарий 1
....


Я понимаю, что в принципе, мой пользователь это по идее секция, а комментарии пользователя это строки в секции, но не совсем понимаю, как это можно реализовать, поделитесь, пожалуйста, своими идеями, буду очень благодарен за помощь!
  • Вопрос задан
  • 2738 просмотров
Решения вопроса 1
morozovdenis
@morozovdenis
я бы сделал два типа ячейки с разным дизайном, в смысле ячейка первого типа представляет пользователя, а ячейка второго типа представляет комментарий. соответственно у них разные отступы, разная высота и т.д.

если нужно что-бы ячейки раскрывались/закрывались и/или отображались только например 3 последних комментария, то по нажатию на кнопку "раскрыть комментарии" вызывать метод reloadData и пусть перестроит видимую часть таблицы

UPD:
Вам нужно в сториборде создать две разных ячейки и присвоить им в настройках два разных ReuseIdentifier-а(например UserCell для ячейки юзера и CommentCell для ячейки комментария). Потом прописать делегаты для кол-ва секций и кол-ва ячеек в каждой секции:
#pragma mark - UITableViewDataSource
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return self.users.count;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return self.users[section].comments.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
	if (indexPath.row == 0)
	{
		UITableViewCell *cell = [[self tableViewAllCheckins] dequeueReusableCellWithIdentifier:@"UserCell"];
		
		NSDictionary *userInfo = self.users[indexPath.section];
		
		// заполнение ячейки User-а
		
		return cell;
	}
	else
	{
		CommentViewCell *commentCell = [[self tableViewAllCheckins] dequeueReusableCellWithIdentifier:@"CommentCell"];
		
		UserInfo *userInfo = self.users[indexPath.section];
		
		CommentInfo *comment = userInfo.comments[indexPath.row - 1]; // так как нулевая ячейка в секции принадлежит пользователю, а первая ячейка принадлежит нулевому комментарию, то надо сделать минус 1
		
		// заполнение ячейки Comment-а
		
		return commentCell;
	}
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы