我有WizardSequenceViewController
一个IBOutlet WizardView *_wizardView
. 在许多WizardSequenceViewController.xib
文件中,我将view
插座连接到文件的所有者 - WizardSequenceViewController
. 我有一个该视图的子视图,该视图的类属性设置为WizardView
. 我已将其连接WizardView
到文件所有者中的插座。最后,在我的文件中,WizardView.xib
我有一个UILabel
用于测试视图是否正在呈现的文件。当我WizardSequenceViewController
从标签栏中选择时,我看到 superviewview
而不是 subview _wizardView
。当我在文件中的-(id)initWithCoder
方法中设置断点时,WizardView.m
我看到它停在那里,所以我知道它正在调用该初始化程序(因此它应该正在使用 xib 加载该文件)。我已经尝试了许多迭代和变化来让这个东西工作,但我做不到,我快疯了。有人有什么想法吗?
2 回答
来自 Apple 文档“视图控制器基础知识,关于自定义视图控制器”:
视图控制器与其视图层次结构中的视图之间的一一对应是关键的设计考虑因素。您不应使用多个自定义视图控制器来管理同一视图层次结构的不同部分。同样,您不应该使用单个自定义视图控制器对象来管理多个屏幕的内容。
注意:如果要将视图层次结构划分为多个子区域并分别管理每个子区域,请使用通用控制器对象(从 NSObject 降级的自定义对象)而不是视图控制器对象来管理每个子区域。然后使用单个视图控制器对象来管理通用控制器对象。
也许您不能在视图控制器中进行视图和子视图插座设置。而且我不确定将子视图出口分配给单独的 NSObject 子类是否会起作用,因为您将如何呈现它?您可以使用 initWithFrame 和 addSubview 以编程方式编写子视图,而不是使其成为插座吗?或者,如果您真的想以图形方式设置它,您可以将它分配给单独的视图控制器作为所有者吗?然后顶视图控制器将调用presentModal
子视图控制器。或者,如果您只需要一个 UILabel 作为子视图,只需将标签添加到主视图?
即使我遇到了类似的问题。但是通过以下链接中给出的步骤解决了它。希望能帮助到你。 http://blog.yangmeyer.de/blog/2012/07/09/an-update-on-nested-nib-loading