2013-02-19 4 views
1

У меня есть UIViewController с UITableView и NavigationController для реализации навигационной системы. Пользователь может просматривать иерархию папок и документов.Сверлить вниз, UITableView и GridView

Я использую NSFetchedResultController для заполнения UITableView из базы данных.

Я хотел бы добавить возможность просмотра иерархии с помощью GridView (fe: AQGridView). Идея состоит в том, чтобы на панели навигации была кнопка для переключения между tableView и gridView.

Проблема/Вопрос 1:

Что это лучший способ для переключения программно из контроллера с таблицей к контроллеру с сеткой?

Проблемы/Вопрос 2:

После включения, если есть и другие контроллеры проталкиваются в контроллер навигации, и пользователь возвращается, эти контроллеры вида будут представлены без каких-либо изменений. Как я могу обновить эти контроллеры представлений? Например: пользователь переключается с таблицы на сетку, затем возвращается, а после появления текущего контроллера пользователь снова видит таблицу -> неправильно.

ответ

2

Если вы показываете верхний уровень иерархии (UITableView), вам нужно добавить UITableView или представление сетки в виде подзонов по запросу.

Вы бы добавить методы к контроллеру вида:

-(void)displayAsGridView { 
    // hide/remove the table view 
    // populate the grid view and display 
} 

-(void)displayAsTableView { 
    // remove or hide grid view 
    // make sure the table view exists, if not, create it 
    [self.tableView reloadData]; 
} 

В источнике данных таблицы:

-(UITableViewCell*)tableView:(UITaleView*)tableView cellForRowAtIndexPath:(IndexPath*)indexPath { 
    // you populate the view cell as you would for any other table 
} 

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

+0

Выполнение этого, я собираюсь написать много, если ... еще, не так ли? Например, в некоторых из методов делегата NSFetchedResultController. if (self.displayingAsGridView) updateGrid else updateTable. Не могли бы вы рассказать мне, какой у вас дизайн? Благодарю. – louissmr

+0

@louissmr Я не думаю, что вы будете писать столько условий, сколько вы думаете. Как данные, представленные в таблице, должны обрабатываться только в делегате таблицы (он ничего не знает о представлении сетки). Точно так же для вида прикрытия. Я обновлю код sudo. –

+0

Я вижу, вероятно, я собираюсь добавить некоторые методы делегата для сетки и переписать некоторый код в методах делегата NSFetchedResultController. Благодарю. – louissmr

Смежные вопросы