Обновление Master TableView контроллера UISplitView - PullRequest
0 голосов
/ 09 ноября 2011

, портируя наше последнее приложение для iPhone на универсальное приложение, я решил использовать контроллер SplitView для iPad внутри TabBarController.SplitViewController управляется AppDelegate для каждой вкладки.

Все работает нормально, но моя проблема в том, что мой MasterView (слева от SplitView) включает в себя 4 кнопки категорий для изменения данных TableViews.Если я нажимаю одну из кнопок, TableView необходимо обновить / Обновить данные, чтобы отобразить новый контент выбранной категории.Я создал функцию для внесения изменений и связал свои кнопки с ней в конструкторе интерфейсов.

В конце своей функции я попытался обновить контроллер следующим образом:

[self tableView ReloadData];

но SplitView не показывает обновление.Все еще старые данные.Я немного протестировал NSLog, чтобы проверить, правильно ли работает моя функция.Нет проблем.

Затем я попытался получить доступ к tableView через сам SplitViewController, например:

   // PresetController is my TableViewController in the SplitView  
    UISplitViewController *split = (UISplitViewController *)self.parentViewController;    
    PresetController *detail = [split.viewControllers objectAtIndex:0];   

    [detail.tableView reloadData];

Опять нет ошибок, но нет обновления.

AmЯ что-то пропустил?Есть ли способ легко перезагрузить TableViewController в SplitView?Я прочитал кое-что об отправке уведомления через NotificationCenter делегату, но все еще не смог найти полезный ресурс.

РЕДАКТИРОВАТЬ:

Для понимания моей структуры,вот способ, которым я настроил SplitView в моих AppDelegates "didFinishLaunchingWithOptions" Метод:

NSMutableArray *controllers = [NSMutableArray arrayWithCapacity:[self.rootController.viewControllers count]];

        int tabNum = 0;
        for (UIViewController *controller in self.rootController.viewControllers) {



                UISplitViewController *split = [[[UISplitViewController alloc] init] autorelease];
                split.tabBarItem = controller.tabBarItem;
                iPadDetailView *detail = [[iPadDetailView alloc] initWithNibName:@"iPadDetailView" bundle:nil]; // a detail view will come here
                UINavigationController *nav = [[[UINavigationController alloc] initWithRootViewController:detail] autorelease];

                split.viewControllers = [NSArray arrayWithObjects:controller, nav, nil];


                [controllers addObject:split];
            }
            tabNum++;

1 Ответ

0 голосов
/ 09 ноября 2011

Попробуйте:

PresetController *detail = [split.viewControllers lastObject];

Контроллер представления с индексом 0 будет вашим «главным» контроллером, и я предполагаю, что контроллер «detail» - это тот, у которого есть табличное представление, которое вы пытаетесь обновить.

Редактировать:

Вы не хотите использовать UISplitViewController внутри представления вкладки;это должно быть rootViewController.

...