我有一个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/

10-11 03:00