У меня есть несколько спортивных матчей, каталогизированных по годам, и для каждого матча у меня есть окончательный результат, дата матча и бомбардир (-ы).
Я показываю эти совпадения в виде таблицы, например:
Итак, чего я хотел бы добиться: при нажатии на ячейку показывать детали совпадения, как показано на рисунке.
Я также нашел несколько библиотек для достижения стиля аккордеон / расширяемый, но никто не выполняет эту работу. Они просто расширяют ячейку и показывают другую ячейку.
4 ответа
В этом случае вам даже не нужно использовать расширяемый / аккордеон. Вот как с этим можно справиться. Допустим, размер вашей ячейки, когда нормальный - 40, а когда конкретный щелчок - 100. В heightForRowAtIndexPath вы можете проверить, какая ячейка выбрана, и вернуть больше высоты
if(selectedRow == indexPath.row) {
return 100;
} else {
return 40;
}
Тогда то, что вы можете сделать, это didSelectRowAtIndexPath или метод события щелчка
[self.tableView beginUpdates];
[[self tableView] reloadRowsAtIndexPaths:@[[NSIndexPath indexPathForItem: selectedRow inSection:0]] withRowAnimation:UITableViewRowAnimationAutomatic];
[self.tableView endUpdates];
Таким образом, ваша ячейка будет отображать все это, но в зависимости от высоты, которую вы скрываете или показываете.
Обновленный ответ с указанием источника
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 objectForKey@"MatchName"];
if() {
cell.heightConstraintSecondView.constant = 0;
} else {
cell.heightConstraintSecondView.constant = 59;
cell.team1.text = [matches objectForKey@"Team1"];
cell.team2.text = [matches objectForKey@"Team2"];
cell.score.text = [matches objectForKey@"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];
}
}
Попробуйте одно из этих:
- obj-C: KMAccordionTableViewController
- swift: AccordionTableViewController
Более чистый способ - создать 2 ячейки с разными идентификаторами и изменить их во время выполнения, когда вы щелкаете ячейку. Отметьте этот вопрос: Раскрывающийся список в UITableView в iOS
Вы можете использовать HVtableview для этой цели, попробуйте эту ссылку https://github.com/xerxes235/HVTableView
Похожие вопросы
Связанные вопросы
Новые вопросы
ios
iOS - мобильная операционная система, работающая на Apple iPhone, iPod touch и iPad. Используйте этот тег [ios] для вопросов, связанных с программированием на платформе iOS. Используйте связанные теги [target-c] и [swift] для проблем, характерных для этих языков программирования.