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

问题描述:

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

我已经实现了splitviewcontroller willHideViewController & willShowViewController帮助我在纵向模式下隐藏主视图控制器。我使用下面的代码在应用程序委托的didFinishLaunchingWithOptions方法intially加载意见,

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

我想如果并欣赏你可以点我正确的方向。

谢谢, 塔潘德赛

主视图被呈现在酥料饼和酥料饼可用于控制主的可见性。

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

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

@property (nonatomic, strong) UIPopoverController *pc; 

2)捕获popoverController上SplitViewController 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关闭弹出框

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