【发布时间】:2016-08-31 19:07:54
【问题描述】:
我的应用程序中的所有控制器都继承自 UIViewController 的抽象基类。我还有一个UIView (View) 的子类,它增加了一些额外的所需属性,其中包括反应性可可。现在在我的自定义视图控制器类中,我想覆盖 loadView 并执行以下操作:
override func loadView() {
let customView = View(frame: UIScreen.mainScreen().bounds)
self.view = customView
}
然后我有一个属性rac_view:
var rac_view: View {
return self.view as? View ?? View()
}
这样我的视图控制器类的所有子类都可以立即访问View 属性,而无需自己执行额外的转换。
在我覆盖 loadView 之前,一切都很好。一旦我这样做,我就会在应用程序启动时崩溃:
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'containerView is required.'
在我的故事板中,我的初始视图控制器有几个容器视图,其中嵌入了从我的抽象基类继承的其他视图控制器的转场。出于某种原因,当涉及到容器视图时,覆盖 loadView 并设置我自己的自定义视图会给工作带来麻烦,我不知道为什么。
有没有人见过或经历过这样的事情?
【问题讨论】:
-
这可能是因为您将 self.view 分配给两个不同的东西,一个是自定义视图,另一个是 rac_view。您是否也尝试过除了 loadView 之外的其他初始化程序?
标签: ios swift uiviewcontroller uistoryboard uistoryboardsegue