在通用 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 拉伸