【问题标题】:Hiding Master View Controller in SplitView regardless of device orientation无论设备方向如何,在 SplitView 中隐藏主视图控制器
【发布时间】:2012-06-19 15:57:59
【问题描述】:

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

如果有人能告诉我在设备重新定向时隐藏主视图的逻辑位于/执行的位置,那么对我有很大帮助。我一直在查看 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;
}

所有帮助将不胜感激。

【问题讨论】:

    标签: objective-c ios ipad uisplitviewcontroller


    【解决方案1】:

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

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

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

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

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

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

    How to hide master view in UiSplitviewcontroller in ipad

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

    更新:

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

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

    参考: splitViewController in Ipad that doesnt hide in portrait

    【讨论】:

    • 感谢您的回答和链接。一定会去看看的。
    • 当然没问题。此外,似乎就在最近在 iOS 5.0 中,他们添加了功能来满足您的需求!尽管 MGSplitViewController 确实有很多很棒的额外功能,但这可能是您正在寻找的简单修复。 @MrDresden
    • 隐藏视图控制器后有没有办法取消隐藏它?我似乎无法找到再次调用此函数的方法
    • @Kyle 你找到解决方案了吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-25
    • 2011-08-06
    相关资源
    最近更新 更多