[英]Add a subview to a custom class UIViewController that loads from nib, in Storyboard
为了澄清这个荒谬的标题:
我正在使用自己的JSQMessagesViewController子类( https://github.com/jessesquires/JSQMessagesViewController)-我们将其称为ACMessagesViewController。 我通过将情节提要UIViewController的自定义类设置为ACMessagesViewController来通过情节提要加载ACMessagesViewController。 我试图通过情节提要向ACMessagesViewController的视图添加一个子视图。
JSQMessagesViewController从笔尖加载。 当我通过情节提要板向ACMessagesViewController的视图添加子视图时,该视图消失。 子视图似乎要添加到ACMessagesViewController的self.view以外的视图中,并且当viewdidload范围运行通过时,子视图就消失了。
我的问题是:1.从笔尖加载UIViewController时,将子视图(通过情节提要)添加到自定义类UIViewController的正确方法是什么? 2.在此视图加载过程中发生了什么? 为什么我的子视图(通过情节提要添加)添加到与ACMessagesViewController中的self.view不同的视图中?
提前致谢!
我认为这是在iOS开发中经常遇到的“如果您需要解决它,您可能做错了”的场景之一。 :-)确实,如果您想要JSQMessagesViewController提供的功能,则无需添加其他视图。 但是,如果必须添加视图,则“正确”的方法是将它们添加为在viewDidLoad中调用super之后任何self.view的子视图。 如果您不想以编程方式构造视图,则可以将它们放在单独的笔尖(而不是情节提要)中,然后手动加载它们。
(注意:这是假设viewDidLoad被调用。如果未调用,则可能需要使用其他方法。)
我使用@Anna的建议在viewDidLoad
添加视图,但是您无需使用第二个Xib或在代码中设计视图。 您需要的是:
A.在情节提要/ xib文件的JSQMessagesViewController
场景中设计视图。
B.创建您需要呈现的视图的出口。
C.在viewDidLoad
使用view.addSubview(myView)
添加您的视图(或者为其中的所有objc添加[self.view addSubview:self.myView]
)
D.就这样!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.