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

时间:2018-01-22 08:53:59

标签: ios storyboard uistoryboard xcode9 xcode-storyboard

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

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

4 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

你应该以模块方式划分你的故事板。否则你的项目将花费很多时间在故事板上进行一次更改。

我的建议是 您可以使用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"

         }

}

答案 2 :(得分:1)

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

  

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

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

答案 3 :(得分:1)

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