使用Storyboard(XCode 4.2)在Master-Detail应用程序中隐藏MasterViewController

时间:2012-02-01 17:03:50

标签: master-detail xcode-storyboard

我使用Master-Detail Templte和storyboard创建了新的应用程序。我想给用户设施他们可以在横向模式下隐藏/显示主视图控制器。我在网上发现了一些例子,但没有一个使用故事板和Master-Detail模板和导航控制器。

我已经实现了splitviewcontroller willHideViewController& willShowViewController,它帮助我在纵向模式下隐藏主视图控制器。我在App Delegate的didFinishLaunchingWithOptions方法中使用下面的代码来加载视图,

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

如果你能指出正确的方向,我会很高兴。

谢谢, Tapan Desai

1 个答案:

答案 0 :(得分:0)

主视图以弹出框形式显示,弹出窗口可用于控制母版的可见性。

所以......按照以下步骤操作:

1)创建一个属性来保存popoverController

@property (nonatomic, strong) UIPopoverController *pc;

2)在SplitViewController上捕获popoverController willHide委托调用

-(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来关闭popover

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