我有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.'
在我的故事板中,我的初始视图控制器有几个容器视图,其中嵌入了从我的抽象基类继承的其他视图控制器的segue。出于某种原因,覆盖loadView
并设置我自己的自定义视图会在容器视图方面产生影响,我不确定原因。
有没有人见过或经历过这样的事情?
答案 0 :(得分:1)
我发现原因是尽管在loadView
中设置了自定义视图,但在我的故事板中,我的视图控制器的视图属于UIView
类型,而不是View
。事实上,我根本不需要覆盖loadView
,只需将故事板中的view属性设置为我的自定义类。