拆分视图控制器与登录的优雅解决方案

Elegant solution for Split view controller vs Login

在一个只显示拆分视图控制器的简单应用程序中,在显示 master/detail 之前向用户显示登录的最佳方式是什么,一旦确认登录,显示拆分视图控制器的 master/detail?

有没有一种优雅的方式来处理这个问题而不会造成混乱的视图层次结构?

我正在使用 IB 构建视图,但也欢迎使用编程解决方案。

登录成功后,将window的root设置为SplitViewController:

let splitVC = UISplitViewController()
let window = UIApplication.shared.windows.first
window?.rootViewController = splitVC

我会在启动时显示模态视图,然后您可以使用登录字段对其进行配置。这允许您将拆分视图保留为根视图。在 AppDelegate 的 didFinishLaunchingWithOptions 中,您可以添加如下内容:

    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let modalView = storyboard.instantiateViewController(withIdentifier: "startupView")
    modalView.modalPresentationStyle = .formSheet
    splitViewController.present(modalView, animated: true, completion: nil)

配置拆分视图后。这将显示一个带有标识符 "startupView" 的视图控制器,然后您可以在 Storyboard 中对其进行配置。

编辑 - 如果您不希望用户在登录前看到任何 master/detail 内容,您可能还希望将模态视图设置为页面 sheet 或模糊背景。