【发布时间】:2018-06-30 20:34:06
【问题描述】:
回到 XCode 5 和 6 次,不建议将所有视图控制器放在一个故事板上,我的经验证明:XCode 变慢了。
今天的情况如何? XCode 9 可以处理这个吗? Apple 是否正式建议将所有内容都放在一个单独的故事板中?
【问题讨论】:
标签: ios storyboard uistoryboard xcode9 xcode-storyboard
回到 XCode 5 和 6 次,不建议将所有视图控制器放在一个故事板上,我的经验证明:XCode 变慢了。
今天的情况如何? XCode 9 可以处理这个吗? Apple 是否正式建议将所有内容都放在一个单独的故事板中?
【问题讨论】:
标签: ios storyboard uistoryboard xcode9 xcode-storyboard
在我看来,最好将应用程序划分为模块或“流”之类的东西;例如,我通常创建包含登录/注册内容的 Onboarding 故事板,或包含设置菜单和子菜单(都是视图控制器)的 Settings 故事板。 此外,我从不直接在情节提要中创建 UITableViewCell 或 UICollectionViewCell,但我创建了一个专用的 .xib 文件。 我使用相同的@Prashant Tukadiya 方法来处理视图控制器实例化和情节提要处理(以更通用的方式)。
今天的情况如何? XCode 9 可以处理这个吗?
1-2 年前我在一个项目中工作,它在一个故事板中包含所有视图控制器,我最近在 XCode 9 中打开它,它仍然非常慢。
【讨论】:
如您所愿,有时您必须在主故事板中的视图控制器数量增加时执行此操作,以便在您的应用程序变大并且故事板打开/保存缓慢时划分应用程序功能
【讨论】:
您应该按模块划分情节提要。否则,您的项目将花费大量时间在情节提要中进行一次更改。
我的建议是 您可以使用 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"
}
}
【讨论】:
我为划分的逻辑单元创建不同的故事板并将引用传递给它们(XCode 中的故事板引用)。这有助于让他们更有条理。 GitHub 上还有一个名为 R.swift 的不错的库(参见 https://github.com/mac-cain13/R.swift),例如 Android 中的资源文件。它解析所有资源,如图像、笔尖、故事板等,并减少按名称调用资源时出错的可能性。
【讨论】: