target-c программно изменить представление таблицы со стандартного на сгруппированное? - PullRequest
1 голос
/ 13 августа 2010

Следующая ситуация относится к приложению для iPad, над которым я работаю в своей компании.

Итак, у меня есть массив типа "Person", который содержит информацию о списке людей. На начальной странице у меня есть таблица, которая отображает их имя и изображение. Когда это загружается, результаты разгруппированы. Мне было интересно, есть ли способ легко сгруппировать эти результаты с помощью нажатия кнопки, основанной на чем-то вроде местоположения или названия компании. Причина, по которой они не группируются при загрузке, заключается в том, что полномочия выше, чем я счел необходимым сначала отобразить необработанный список. Есть идеи, как сделать что-то подобное? Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 13 августа 2010

Вы хотите использовать «разделы» для разделения таблицы.

Сначала необходимо отсортировать источник данных в нужные группы, а затем отразить его в представлении.

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

Когда данные не сгруппированы, вы все равно можете использовать словарь, но с одной записью, а не со многими, и затем отразить это в пользовательском интерфейсе.

Таким образом, когда вас спросят, сколько разделов в таблице вы можете вернуть [dictionary count];, а затем, когда вас спросят о количестве строк, вы можете сделать что-то вроде [[dictionary objectForKey@"myKey"] count];

и т. Д.

Когда вы перенастроили свой источник данных, вы можете позвонить [self.tableView reloadData];, чтобы перезагрузить таблицу с разделами.

1 голос
/ 13 августа 2010

Вам придется удалить UITableView и добавить еще один на его место через [[UITableViewController alloc] initWithStyle:UITableViewStyleGrouped];. Вы не можете изменить существующий стиль во время выполнения.

Другой способ сделать это, сгруппировать его с самого начала, но вернуть 1 для - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView;, если он «не сгруппирован», и вернуть все строки для - (NSInteger)tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section, когда он сгруппирован, сделать это как обычно способ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...