我使用Master-Detail Templte和故事板创建了新的应用程序。我想为用户提供在横向模式下隐藏/显示主视图控制器的便利。我在网上发现了一些例子,但没有一个是使用故事板和主细节模板与导航控制器。
我已经实现了splitviewcontrollerwillHideViewController&willShowViewController,它可以帮助我在纵向模式下隐藏主视图控制器。我在应用程序代理的didFinishLaunchingWithOptions方法中使用以下代码来初始加载视图,
UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController;
UINavigationController *navigationController = [splitViewController.viewControllers lastObject];
splitViewController.delegate = (id)navigationController.topViewController;
如果你能给我指明正确的方向,我将不胜感激。
谢谢,Tapan Desai
主视图显示在popover中,popover可用于控制主视图的可见性。
所以。。。遵循以下步骤:
1) 创建一个属性来保存popoverController
@property (nonatomic, strong) UIPopoverController *pc;
2) 捕获SplitViewController上的popoverController将隐藏代理调用
-(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];
}