Расширяемые ячейки UITableView, показывающие данные

У меня есть спортивные состязания, каталогизированные по годам, и для каждого матча у меня есть конечный результат, дата матча и бомбардир (ы).

Я показываю эти матчи в «Табличном представлении», например:

введите описание изображения здесь

Так что я бы хотел достичь: при нажатии на ячейку покажите детали соответствия, как показано на рисунке.

Я также нашел некоторые библиотеки для достижения стиля аккордеона / расширяемости, но никто не выполняет эту работу. Они просто расширяют ячейку и показывают другую ячейку.

В этом случае вам даже не нужно использовать расширяемый / аккордеон. Вот как вы можете справиться с этим. Позволяет указать размер вашей ячейки, когда нормальное значение равно 40, а при конкретном нажатии – 100. В heightForRowAtIndexPath вы можете проверить, какая ячейка выбрана, и вернуть больше высоты

if(selectedRow == indexPath.row) { return 100; } else { return 40; } 

Тогда вы можете сделать это в didSelectRowAtIndexPath или в методе clickEvent

 [self.tableView beginUpdates]; [[self tableView] reloadRowsAtIndexPaths:@[[NSIndexPath indexPathForItem: selectedRow inSection:0]] withRowAnimation:UITableViewRowAnimationAutomatic]; [self.tableView endUpdates]; 

Таким образом, ваша ячейка будет отобрана все, но на основе высоты вы скрываете или показываете контент.

Обновлен ответ с помощью Enter Source

ViewController.m

 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { if(selectedIndex == indexPath.row) return 100; else return 40; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { customCell *cell = (UITableViewCell*)[tableView dequeueReusableCellWithIdentifier:@"Cell"]; NSDictionary *matches = self.dataArray[indexPath.row]; cell.matchName.text = [matches [email protected]"MatchName"]; if() { cell.heightConstraintSecondView.constant = 0; } else { cell.heightConstraintSecondView.constant = 59; cell.team1.text = [matches [email protected]"Team1"]; cell.team2.text = [matches [email protected]"Team2"]; cell.score.text = [matches [email protected]"Score"]; } return cell; } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { selectedIndex = indexPath.row; [self.tableView beginUpdates]; [[self tableView] reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic]; [self.tableView endUpdates]; } } 

вы можете использовать HVtableview для этой цели, попробуйте эту ссылку https://github.com/xerxes235/HVTableView

Более чистый способ состоит в том, чтобы создать 2 ячейки с разными идентификаторами и изменить их во время выполнения, когда вы нажимаете на ячейку. Проверьте этот вопрос: раскрывающийся список в UITableView в iOS

Попробуйте один из них:

  • obj-C: KMAccordionTableViewController
  • быстрый: AccordionTableViewController
  • iPhone UITableView отсутствует раскрытие-кнопка после нажатия кнопки «Удалить» при повторном использовании UITableViewCell
  • Перекрестные указатели UIScrollViews - Могу ли я изменить поведение прокрутки?
  • Выбранная ячейка UITableView не остается выбранной при прокрутке
  • Конкретный / полный пример использования NSPrivateQueueConcurrencyType?
  • PerfomSegue в классе UITableViewCell
  • Ультравизуальное приложение для iPhone, такое как прокрутка UIView или UITableView
  • Выбрать программную ячейку таблицы: selectRowAtIndexPath vs setSelected
  • Как подсчитать выбранные строки UITableView в Swift. Необязательно в indexPathForSelectedRow
  • indexPathForCell возвращает nil, поскольку ios7
  • Свойство строки индекса UITableView для iOS 7 равно nil
  • установить динамическую высоту таблицы и ограничить до некоторой степени быстрое 3?
  • Давайте будем гением компьютера.