Есть ли способ изменить секционное представление таблицы на развернутое представление таблицы? - PullRequest
1 голос
/ 03 декабря 2010

У меня есть секционное представление таблицы со списком, который представляет собой массив, заполненный словарями.В моем приложении все разделы и ячейки отображаются в первом представлении.Но теперь мне нужно изменить его, чтобы он выглядел так: секции должны стать ячейками (с названиями секций).Когда вы нажимаете эту ячейку, появляются ячейки, содержащиеся в разделе.

Есть ли способ сделать это без переписывания кода?1005 *

Ответы [ 2 ]

2 голосов
/ 03 декабря 2010

Я понимаю, что вы все еще хотите использовать одно представление таблицы, где ячейки скрыты для всех разделов, кроме одного. В этом случае вы можете сделать это:

  • Реализуйте -tableView:headerForSection: и поместите кнопку в представление, которое вы вернете. Напишите номер раздела на теге кнопок. Добавить действие к кнопке с параметром (UIButton *)sender: `- (void) headerPressed: (UIButton *) sender
  • Вам нужно также реализовать -tableView:heightforHeaderInSection:.
  • -(void) headerPressed:(UIButton *)sender записывает тег senders в целое число члена и перезагружает таблицу.
  • в -tableview:numberOfRowsInSection: вы возвращаете 0, если раздел int не равен целому числу члена, которое вы сохранили. Если оно равно, вернуть количество строк в этом разделе.
1 голос
/ 03 декабря 2010

Вам нужно будет создать два класса табличного представления. Один для того, который содержит имена разделов, а другой - для строк каждого раздела. В первом случае извлеките имена разделов из списка и, соответственно, заполните строки в таблице. Затем в методе - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath вам нужно вставить другой контроллер представления в стек навигации (что-то вроде этого - в коде шаблона):

// Navigation logic may go here. Create and push another view controller.

     <#DetailViewController#> *detailViewController = [[<#DetailViewController#> alloc] initWithNibName:@"<#Nib name#>" bundle:nil];
     // ...
     // Pass the selected object to the new view controller.
     [self.navigationController pushViewController:detailViewController animated:YES];
     [detailViewController release];

Затем для другого класса табличного представления вы заполняете его, считывая информацию из списка, который соответствует разделу с меткой. Надеюсь, это поможет.

...