单个故事板上的所有视图控制器

All view controllers on a single storyboard

回到XCode 5 和 6 次,不推荐将所有视图控制器放在一个故事板上,我的经验证明了这一点:XCode 变慢了。

今天是什么情况? XCode 9 可以解决这个问题吗? Apple 是否正式建议将所有内容都放在一个单一的故事板中?

如你所愿,有时你必须这样做,当主故事板中的视图控制器数量增加时,当你的应用程序变得更大并且故事板变得缓慢时,为了划分应用程序功能 opens/saves

你应该按照模块的方式划分故事板。否则,您的项目将在故事板的一次更改中花费很多时间。

我的建议是 您可以使用 Storyboard Reference 通过 segue 进行连接,请参见示例

https://www.raywenderlich.com/115697/ios-9-storyboards-tutorial-whats-new-in-storyboards

如果你不想要 segue,一个更好的解决方案是在你的每个 viewcontroller 中进行抽象方法练习以从情节提要

访问

喜欢

//--------------------------------------------------------------------------------

// MARK: - Abstract Methods

//--------------------------------------------------------------------------------

public class func viewController () -> LoginVC {
    return StoryBoard.main.instantiateViewController(withIdentifier: StoryBoard.controller.LoginVC) as! LoginVC
}


//--------------------------------------------------------------------------------
// Now access it with  LoginVC.viewController() and do push or present whatever your operation you requred

我在常量文件中管理所有内容

public struct StoryBoard {

static let main = UIStoryboard.init(name: "Main", bundle: nil)

       struct controller {
           static let LoginVC   =   "LoginView"

         }

}

在我看来,最好将应用程序划分为模块或类似的东西 "flows";例如,我通常会创建包含 login/registration 内容的 Onboarding 故事板,或包含设置菜单和子菜单的 Settings 故事板(它们都是视图控制器)。 此外,我从不直接在故事板中创建 UITableViewCellUICollectionViewCell,但我创建了一个专用的 .xib文件。 我使用相同的@Prashant Tukadiya 方法来处理视图控制器实例化和故事板处理(以更通用的方式)。

What is the situation today? Can XCode 9 handle this?

我在 1-2 年前从事一个项目,该项目在一个故事板中包含所有视图控制器,我最近在 XCode 9 中打开它,但它仍然非常慢。

我为划分的逻辑单元创建不同的故事板并传递对它们的引用(XCode 中的故事板引用)。它有助于使它们更有条理。 GitHub 上还有一个名为 R.swift 的不错的库(参见 https://github.com/mac-cain13/R.swift),例如 Android 中的资源文件。它解析所有资源,如图像、nib、故事板等,并减少按名称调用资源时出错的可能性。