我有一个UISplitViewController嵌套在UINavigationController中,其中有一个UINavigationItem按钮用于在纵向方向上切换主视图的显示。我希望在视图首次以纵向方向加载时,在详细视图上方显示主视图。我找到的任何相似示例都显示主视图和详细视图在纵向方向上分割屏幕,但我需要在纵向方向上详细视图为全屏,当UISplitViewController首次加载时,主视图覆盖详细视图(就像从左侧滑出主视图一样)。是否有人知道如何做到这一点?
编辑:这不是重复的问题。答案在评论中被发现。解决方法是在 UISplitViewController
上使用 preferredDisplayMode
并将其设置为 UISplitViewControllerDisplayModePrimaryOverlay
为了保留评论和上下文,原回答如下:
原始回答
这是一个重复的问题:UISplitViewController in portrait on iPhone shows detail VC instead of master
参考那个问题的解决方案是让实现了 UISplitViewControllerDelegate
的视图控制器使用以下代码:
- (BOOL)splitViewController:(UISplitViewController *)splitViewController
collapseSecondaryViewController:(UIViewController *)secondaryViewController
ontoPrimaryViewController:(UIViewController *)primaryViewController {
if ([secondaryViewController isKindOfClass:[UINavigationController class]]
&& [[(UINavigationController *)secondaryViewController topViewController] isKindOfClass:[DetailViewController class]]
&& ([(DetailViewController *)[(UINavigationController *)secondaryViewController topViewController] detailItem] == nil)) {
// Return YES to indicate that we have handled the collapse by doing nothing; the secondary controller will be discarded.
return YES;
} else {
return NO;
}
}
或者您可以使用以下方法:
- (BOOL)splitViewController:(UISplitViewController *)svc shouldHideViewController: (UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation {
// Force master view to show in portrait and landscape
return NO;
}
preferredDisplayMode
属性。那个管用吗?我现在脑子里想不起来这个属性是什么了。 - lewiguez