【问题标题】:All view controllers on a single storyboard单个故事板上的所有视图控制器
【发布时间】:2018-06-30 20:34:06
【问题描述】:

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

今天的情况如何? XCode 9 可以处理这个吗? Apple 是否正式建议将所有内容都放在一个单独的故事板中?

【问题讨论】:

    标签: ios storyboard uistoryboard xcode9 xcode-storyboard


    【解决方案1】:

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

    今天的情况如何? XCode 9 可以处理这个吗?

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

    【讨论】:

      【解决方案2】:

      如您所愿,有时您必须在主故事板中的视图控制器数量增加时执行此操作,以便在您的应用程序变大并且故事板打开/保存缓慢时划分应用程序功能

      【讨论】:

        【解决方案3】:

        您应该按模块划分情节提要。否则,您的项目将花费大量时间在情节提要中进行一次更改。

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

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

        如果你不想继续,更好的解决方案是在你的每个视图控制器中都有抽象方法实践,以便从故事板访问

        就像

        //--------------------------------------------------------------------------------
        
        // 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"
        
                 }
        
        }
        

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2021-08-05
            • 2018-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多