在通用 iOS 应用程序中使用 Storyboard 的 UISplitView

Posted

技术标签:

【中文标题】在通用 iOS 应用程序中使用 Storyboard 的 UISplitView【英文标题】:UISplitView using Storyboard in Universal iOS app 【发布时间】:2015-05-04 07:21:39 【问题描述】:

我在我的通用 ios 应用程序中使用 UISplitView,我只有一个情节提要。除了少数东西,我能够实现所有功能,

在 iPad 中,我希望主视图始终可见,因此我使用了委托,

-(BOOL)splitViewController:(UISplitViewController *)svc shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation

    return NO;

但主视图仍然隐藏在纵向模式下。同样在 iPhone 中,应用程序使用带有导航返回按钮的 DetailView 启动。我希望 iPhone 应用程序首先显示 MasterView。我已经查看了几个示例,例如 this 或 this,但没有解决我的问题。

我使用的是 Objective C 而不是 Swift。

【问题讨论】:

【参考方案1】:

看看documentation for UISplitViewControllerDelegate

- (BOOL)splitViewController:(UISplitViewController *)svc shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation

已在 iOS8 中弃用,您必须改为设置 preferredDisplayMode

controller.preferredDisplayMode = UISplitViewControllerDisplayModeAllVisible;

对于显示细节视图控制器而不是主控的iPhone应用,实现UISplitViewControllerDelegate方法:

- (BOOL)splitViewController:(UISplitViewController *)splitViewController collapseSecondaryViewController:(UIViewController *)secondaryViewController ontoPrimaryViewController:(UIViewController *)primaryViewController 
    return YES;

【讨论】:

感谢它解决了主视图隐藏问题。但是对于 iPhone 问题它并没有帮助,但我找到了另一个解决方案, - (BOOL)splitViewController:(UISplitViewController *)splitViewController collapseSecondaryViewController:(UIViewController *)secondaryViewController onPrimaryViewController:(UIViewController *)primaryViewController if ([secondaryViewController isKindOfClass:[UINavigationController class]] && [[(UINavigationController *)secondaryViewController topViewController] isKindOfClass:[CustomerDetailsViewController class]]) return YES; else return NO;【参考方案2】:

您可以通过用户运行时变量设置此属性,如下所示:

Key Path                Type      Value
preferredDisplayMode    Number      2 

这里是首选显示模式的值

case automatic = 0
case primaryHidden = 1
case allVisible = 2
case primaryOverlay = 3

【讨论】:

以上是关于在通用 iOS 应用程序中使用 Storyboard 的 UISplitView的主要内容,如果未能解决你的问题,请参考以下文章

iOS 8 Storyboard Auto Layout 中的 UIImageView 拉伸

通用 ios 应用 iPad 和 iPhone 架构

iOS 11.2 中的通用链接中断

在 iOS 上使用通用链接时的 Google Analytics for Email Tracking

在 iOS 中开发通用应用程序

iOS 9 通用链接(Universal Links)