UISplitViewController在纵向方向上显示主视图在细节视图之上

6
我有一个UISplitViewController嵌套在UINavigationController中,其中有一个UINavigationItem按钮用于在纵向方向上切换主视图的显示。我希望在视图首次以纵向方向加载时,在详细视图上方显示主视图。我找到的任何相似示例都显示主视图和详细视图在纵向方向上分割屏幕,但我需要在纵向方向上详细视图为全屏,当UISplitViewController首次加载时,主视图覆盖详细视图(就像从左侧滑出主视图一样)。是否有人知道如何做到这一点?
2个回答

10

编辑:这不是重复的问题。答案在评论中被发现。解决方法是在 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;

    }
}

不是重复的问题,那个解决方案是为了显示主视图或详细视图。我正在寻找同时显示主视图和详细视图的答案,其中主视图覆盖部分详细视图。您能否指向一个不同的答案或发布一个新的解决方案? - MSU_Bulldog
啊,我看错了。UISplitViewController 上有一个 preferredDisplayMode 属性。那个管用吗?我现在脑子里想不起来这个属性是什么了。 - lewiguez
1
它确实可以工作,你只需要将其设置为UISplitViewControllerDisplayModePrimaryOverlay即可。谢谢! - MSU_Bulldog

2

或者您可以使用以下方法:

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

    //  Force master view to show in portrait and landscape

    return NO;
}

1
这解决了我的问题。我发现较新的无按钮 iOS 设备(具有 FaceID)与传统的带 TouchID 按钮的设备之间的默认行为不同。我将应用程序设计为在并排拆分视图中工作,而不是主视图重叠并弹出。你提供的这段代码修复了它以支持旧的(在我看来更好的)并排样式。 - Seoras

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接