何时为新屏幕创建新故事板与视图控制器?

When to create new storyboard vs View Controller for a new screen?

我是 iOS 开发的新手,找不到这个问题的答案。

我什么时候应该创建一个新的故事板,什么时候应该只为一个新屏幕创建一个新的视图控制器?

Launch ScreenMain 是两个不同的故事板。假设 Main 是登录屏幕,所以在用户登录后,他应该看到一个新的屏幕。我应该使用哪种方法来创建该屏幕?

要直接回答您的最后一个问题,请仅为此使用主故事板:创建您的用户在登录时将看到的场景。使其成为显示的第一个视图。然后创建另一个场景,即您的登录屏幕。当您的主屏幕启动时,让它检查您是否已登录。如果没有,它应该以模式方式启动您的登录屏幕。

您将创建新的 ViewController,仅当您的布局设计因不同设备而异(即 iPad 和 iPhone)或您无法处理以下内容时才需要新故事板iPhone 和 iPad 具有相同的故事板

由于登录过程有时涉及多个屏幕(忘记密码、注册等),您可以做的是将登录和主要拆分为两个故事板。

然后,您可以从应用程序委托中显示:

if userLoggedIn() != nil  // No user logged in
 {
        let storyboard = UIStoryboard(name: "Main", bundle: nil)
        if let rootVC : UIViewController = storyboard.instantiateInitialViewController(){
            window?.rootViewController = rootVC
        }
} else{
        let storyboard = UIStoryboard(name: "Login", bundle: nil)
        if let rootVC : UIViewController = storyboard.instantiateInitialViewController(){
            window?.rootViewController = rootVC
        }
    }
window?.makeKeyAndVisible()

在每个 Storyboard 上设置 rootViewControllers 就可以了。

这也将最小化主情节提要,在许多情况下,主情节提要会随着转场和 VC 变得越来越大,并且变得越来越难以管理。

对于大多数简单的应用程序,只需一个情节提要即可适合您的应用程序 UI。是的,如果您选择遵循现代最佳实践,那么还有 Launch 故事板。所以总共有 2 个。在许多情况下,这就是您所需要的。

但是,"big" 故事板在某些方面可能会变得笨拙。其一,在引擎盖下它是一个巨大的 XML 文件,因此在 Mac 上打开包含大量内容的故事板可能会更慢。这是否困扰你取决于你。此外,如果您在团队中工作而不是单独工作,有时故事板在合并时可能很难跟踪。因此,如果您想将您的应用程序分解成多个情节提要,您可以,并且 iOS 9 具有比以往任何时候都更容易实现的功能(情节提要参考)。

对于我当前的应用程序,我有 3 个故事板,每个都围绕功能进行逻辑组织。一个是我们的多屏登机。另一个用于主应用 UI。第三个是我们的设置屏幕,它有一个很深的导航选项层次结构。将它们分解成单独的故事板是有意义的,因为它们非常不同。

您可能会感到困惑,因为如果您在 Twitter 或 Web 上四处搜索,您可能会看到一些开发人员为每个视图控制器使用一个故事板。那些人是疯子,不要听他们的。当您这样做时,您会错过许多很棒的情节提要功能,其中最大的功能当然是转场。