繁体   English   中英

在情节提要中向从nib加载的自定义类UIViewController添加子视图

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM