Скрыть MasterViewController в приложении Master-Detail с помощью раскадровки (XCode 4.2) - PullRequest
1 голос
/ 01 февраля 2012

Я создал новое приложение, используя Master-Detail Templte с раскадровкой. Я хочу дать пользователю возможность, где они могут Скрыть / Показать Master View Controller в ландшафтном режиме. Я нашел несколько примеров в сети, но ни один не использует раскадровку и шаблон Master-Detail с Navigation Controller.

Я уже реализовал splitviewcontroller willHideViewController & willShowViewController, который помогает мне скрыть Master View Controller в портретном режиме. Я использую приведенный ниже код в методе didFinishLaunchingWithOptions приложения-делегата, чтобы загружать представления изначально,

UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController;
UINavigationController *navigationController = [splitViewController.viewControllers lastObject];
splitViewController.delegate = (id)navigationController.topViewController;

Я бы оценил, если бы вы могли указать мне правильное направление.

Спасибо, Тапан Десаи

1 Ответ

0 голосов
/ 14 марта 2013

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

Итак ... выполните следующие действия:

1) Создайте свойство для хранения popoverController

@property (nonatomic, strong) UIPopoverController *pc;

2) Захватьте popoverController на SplitViewController, чтобы скрыть вызов делегата

-(void) splitViewController:(UISplitViewController *)svc
     willHideViewController:(UIViewController *)aViewController
          withBarButtonItem:(UIBarButtonItem *)barButtonItem
       forPopoverController:(UIPopoverController *)pc
{
    barButtonItem.title = @"Menu"; 
    id detailViewController = [self.splitViewController.viewControllers lastObject];
    [detailViewController setSplitViewBarButtonItem:barButtonItem];
    self.pc = pc;  //poppver controller
}

3) Наконец, просто используйте pc var, чтобы закрыть поповер

 if (self.pc) {
        [self.pc dismissPopoverAnimated:YES];
    }
...