3

我发现很多人询问有关如何以横向和纵向显示主视图的信息,但我想要做的是隐藏正确的主视图,无论设备方向如何并从通过使用导航栏按钮。

如果有人可以告诉我在设备重新定向时隐藏主视图的逻辑位于/执行的位置,那么对我有很大帮助。我一直在查看 Xcode 附带的模板,iOS 的主/详细视图,我注意到以下两个方法是在 AppDelegate.m 文件中声明的,但我似乎无法找出它们是从哪里执行的:

//Called when a button should be added to the nav bar for a view that is hidden
- (void)splitViewController:(UISplitViewController *)splitController willHideViewController: (UIViewController *)viewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)popoverController
{
   barButtonItem.title = NSLocalizedString(@"Master", @"Master");
   [self.navigationItem setLeftBarButtonItem:barButtonItem animated:YES];
   self.masterPopoverController = popoverController;
}

- (void)splitViewController:(UISplitViewController *)splitController willShowViewController:(UIViewController *)viewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem
{
    // Called when the view is shown again in the split view, invalidating the button and popover controller.
    [self.navigationItem setLeftBarButtonItem:nil animated:YES];
    self.masterPopoverController = nil;
}

所有帮助将不胜感激。

4

1 回答 1

9

您实际上无法控制 UISplitViewController。主视图始终存在于横向视图中,并且无法更改它。

然而,“Matt Gemmell 创建了一个名为 'MGSplitViewController' 的出色的自定义 splitViewController。它非常容易实现,大量评论,并包含许多普通 splitViewController 所没有的优秀功能(在横向视图上隐藏主视图,更改拆分的位置在横向视图中,允许用户在运行时流畅地更改拆分大小等)。”

信息和演示: http: //mattgemmell.com/2010/08/03/mgsplitviewcontroller-updated/

直奔源头:https ://github.com/mattgemmell/MGSplitViewController/

-=-=-=-=-=-=-=-=-=-=-=-

我之前在一个类似(但不同)的问题中发布了这个,这里有相同的答案:

如何在 ipad 的 UiSplitviewcontroller 中隐藏主视图

-=-=-=-=-=-=-=-=-=-=-=-

更新:

在 iOS 5.0 及更高版本中,他们终于添加了在横向中隐藏主视图的功能!

-(BOOL)splitViewController:(UISplitViewController *)svc shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation 
{ 
    return YES; 
}

参考: Ipad 中的 splitViewController 不隐藏在纵向中

于 2012-06-19T20:36:13.033 回答