我有一个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
并设置我自己的自定义视图会在工作中引起麻烦,我不确定为什么。以前有没有人看过或经历过这样的事情?
最佳答案
我发现原因是尽管在loadView
中设置了自定义视图,但在我的情节提要中,我的视图控制器的视图类型为UIView
,而不是View
。实际上,我根本不需要重写loadView
,只需将情节提要中的view属性设置为我的自定义类即可。
关于ios - 自定义loadView和容器 View ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37060013/