Развернуть ячейку UITableView в UITableViewstylePlain
Я хочу развернуть ячейку tableview на ней. Существует таблица, в которой две ячейки расширяемы, а другие нет. Мне нужно, когда я нажимаю на расширяемую ячейку, он должен показывать под ним ячейки, а при повторном нажатии он должен скрываться. Ниже приведено изображение.
![enter image description here]()
Как я могу достичь этой функциональности, пожалуйста, руководствуйтесь приведенным выше.
Спасибо заранее.
Ответы
Ответ 1
Здесь - это полное учебное пособие с расширяемым UITableView
Для этого нужен снимок кода.
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if ([self tableView:tableView canCollapseSection:indexPath.section])
{
if (!indexPath.row)
{
// only first row toggles exapand/collapse
[tableView deselectRowAtIndexPath:indexPath animated:YES];
NSInteger section = indexPath.section;
BOOL currentlyExpanded = [expandedSections containsIndex:section];
NSInteger rows;
NSMutableArray *tmpArray = [NSMutableArray array];
if (currentlyExpanded)
{
rows = [self tableView:tableView numberOfRowsInSection:section];
[expandedSections removeIndex:section];
}
else
{
[expandedSections addIndex:section];
rows = [self tableView:tableView numberOfRowsInSection:section];
}
for (int i=1; i<rows; i++)
{
NSIndexPath *tmpIndexPath = [NSIndexPath indexPathForRow:i
inSection:section];
[tmpArray addObject:tmpIndexPath];
}
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
if (currentlyExpanded)
{
[tableView deleteRowsAtIndexPaths:tmpArray
withRowAnimation:UITableViewRowAnimationTop];
cell.accessoryView = [DTCustomColoredAccessory accessoryWithColor:[UIColor grayColor] type:DTCustomColoredAccessoryTypeDown];
}
else
{
[tableView insertRowsAtIndexPaths:tmpArray
withRowAnimation:UITableViewRowAnimationTop];
cell.accessoryView = [DTCustomColoredAccessory accessoryWithColor:[UIColor grayColor] type:DTCustomColoredAccessoryTypeUp];
}
}
}
}
как показано на рисунке ниже
![enter image description here]()
Это и это, одно из решений также поможет вам понять, как управлять расширяемым TableView
Ответ 2
Хорошо, я думаю, что названия, События, Накладные расходы и Друзья будут настраиваться UIView
с UIImageView
для фона, UILabel
для заголовка и UIButton
для расширения. Итак, в основном
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
имеет счетчик возвратов названий, которые у вас есть.
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
с возвратом UIView
для каждого заголовка.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
имеет счет строк в этом заголовке. Возможно, вам понадобится поддерживать массив для этого.
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
с высотой элемента ячейки
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
изначально он должен быть 0 (ноль) для всех разделов, когда пользователь нажимает на расширение, он должен увеличиваться по отношению к количеству строк * высота ячейки в этом разделе.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
Вам может понадобиться хорошая логика для установки всех строк для расширения
Ваши кнопки расширения работают примерно так,
- (void) expandSection:(UIButton *)sender;
что вы можете определить, какой раздел будет расширяться с помощью sender.tag, поэтому не забудьте добавить тег правильно. Вам может понадобиться файл int
в .h
для хранения текущего раздела и его можно использовать в - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
методе источника данных.
Ответ 3
Я думаю, что то, что вы хотите, уже дано Apple. Вы можете взглянуть на Пример кода, предоставленный Apple под названием Просмотр и анимация таблиц.
Ответ 4
Я привел пример исходного кода ниже. Вы можете настроить этот пример на основе вашего требования.
Ссылка на исходный код: Нажмите здесь
Экран вывода:
![enter image description here]()
Ответ 5
JKExpandTableView - это библиотека iOS, лицензированная MIT, которая реализует расширяемый вид таблицы. Обязательно проверьте также включенный образец проекта.
![screenshot]()
Ответ 6
Это возможно делегатом
- (NSInteger)tableView:(UITableView *)tableView indentationLevelForRowAtIndexPath:(NSIndexPath *)indexPath {
//write code here
}
Ответ 7
Принятый ответ верен, но ссылка устарела. Чтобы получить этот пример для работы, вам нужно сделать дополнительные вещи:
Загрузить проект ExpandableTableCells отсюда:
https://github.com/cocoanetics/Examples
Загрузите файлы DTCustomColoredAccessory.h и .m отсюда:
https://github.com/Cocoanetics/DTFoundation/tree/develop/Core/Source/iOS
Поместите файлы DTCustomColoredAccessory в проект ExpandableTableCells.
Там у вас есть рабочий пример, его легче редактировать и перемещать оттуда вместо того, чтобы пытаться писать с нуля.