![](/img/trans.png)
[英]How to hide masterView for UISplitViewcontroller in IOS8
[英]how to hide MasterView on ladscape and portrait orientations UISplitViewController iOS7.1
我正在iOS上開發一個顯示UISplitViewController的應用程序。 在縱向模式下,顯示一個用於顯示/隱藏主視圖控制器(MenuPrincipalVC)的按鈕,如下所示:
但是,當我旋轉視圖控制器時,無論菜單是否在縱向視圖上隱藏,它始終可見
我想要兩個方向(橫向和縱向)上的主視圖具有相同的行為,我希望隱藏主視圖(MenuPrincipalVC),並在頂部顯示一個按鈕以顯示/隱藏主視圖控制器,這是我的代碼:
這是為了創建SplitView並顯示它,masterViewController始終是MenuPrincipalVC,但是detailView取決於rightViewController:
#pragma mark *** UISplitViewController methods ***
-(void)showSplitViewControllerInView:(UIView *)view
withDetailViewController:(id)rightViewController{
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"iPad" bundle: nil];
UINavigationController *leftNavController;
UINavigationController *rightNavController;
MenuPrincipalVC *leftViewController = [mainStoryboard instantiateViewControllerWithIdentifier:@"MenuPrincipalVC"];
leftViewController.title = @" ";
leftNavController = [[UINavigationController alloc] initWithRootViewController:leftViewController];
rightNavController = [[UINavigationController alloc] initWithRootViewController:rightViewController];
leftNavController.toolbarHidden = FALSE;
rightNavController.toolbarHidden = FALSE;
leftNavController.navigationBar.translucent = TRUE;
rightNavController.navigationBar.translucent = TRUE;
leftNavController.toolbar.translucent = FALSE;
rightNavController.toolbar.translucent = TRUE;
UISplitViewController *splitViewController = [[UISplitViewController alloc] init];
splitViewController.viewControllers = [NSArray arrayWithObjects:leftNavController, rightNavController, nil];
splitViewController.delegate = rightViewController;
if ([splitViewController respondsToSelector:@selector(setPresentsWithGesture:)]) {
[splitViewController setPresentsWithGesture:NO];
}
view.window.rootViewController = splitViewController;
}
#pragma -
在我的rightViewController上,我設置了以下方法:
#pragma mark - UISplitViewDelegate methods
-(void)splitViewController:(UISplitViewController *)svc
willHideViewController:(UIViewController *)aViewController
withBarButtonItem:(UIBarButtonItem *)barButtonItem
forPopoverController:(UIPopoverController *)pc{
//Grab a reference to the popover
self.popover = pc;
barButtonItem.title = [NSString fontAwesomeIconStringForEnum:FABars];
NSDictionary *textAttributes = @{NSFontAttributeName : [UIFont fontWithName:kFontAwesomeFamilyName
size:TOOLBAR_ICONS_SIZE],
NSForegroundColorAttributeName : [UIColor whiteColor]};
[barButtonItem setTitleTextAttributes:textAttributes forState:UIControlStateNormal];
UINavigationItem *navItem = self.navigationItem;
[navItem setLeftBarButtonItem:barButtonItem animated:YES];
}
-(void)splitViewController:(UISplitViewController *)svc
willShowViewController:(UIViewController *)aViewController
invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem{
//Remove the barButtonItem.
[_navBarItem setLeftBarButtonItem:nil animated:YES];
//Nil out the pointer to the popover.
_popover = nil;
}
#pragma mark -
感謝您的支持
我要做的就是將下一行代碼添加到我的詳細視圖控制器中:
-(BOOL)splitViewController:(UISplitViewController *)svc shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation{
return YES;
}
另一個解決方案可能是簡單地專門設置主視圖控制器的寬度(當然,演示控制器可以始終替換奇怪的行為和難以使用的拆分視圖方法)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.