将子视图添加到从故事板中的nib加载的自定义类UIViewController

时间:2014-05-22 18:54:10

标签: ios iphone xcode storyboard xib

澄清这个荒谬的标题:

我正在使用我自己的JSQMessagesViewController(https://github.com/jessesquires/JSQMessagesViewController)的子类 - 让我们称之为ACMessagesViewController。我正在通过storyboard加载我的ACMessagesViewController,方法是将storyboard UIViewController的自定义类设置为ACMessagesViewController。我试图通过故事板向ACMessagesViewController的视图添加子视图。

JSQMessagesViewController从笔尖加载。当我通过故事板向ACMessagesViewController的视图添加子视图时,视图消失。子视图似乎是添加到我的ACMessagesViewController的self.view之外的视图,并且当viewdidload范围运行时,子视图已经消失。

我的问题是: 1.当UIViewController从nib加载时,将子视图(通过storyboard)添加到自定义类UIViewController的正确方法是什么? 2.此视图加载过程中发生了什么?为什么我的子视图(通过故事板添加)添加到我的ACMessagesViewController中与self.view不同的视图中?

提前致谢!

2 个答案:

答案 0 :(得分:3)

我认为这是其中之一"如果你需要解决它,你可能做错了#34;您经常在iOS开发中遇到的场景。 :-)真的,如果你想要JSQMessagesViewController提供的功能,你就不需要添加额外的视图。但是如果你必须添加视图,那么"对"这样做的方法是将它们添加为在viewDidLoad中调用super之后的self.view的子视图。如果您不想以编程方式构建视图,可以将它们放在单独的笔尖(而不是故事板)中并手动加载它们。

(注意:假设调用了viewDidLoad。如果它不是,你可能需要挂钩到其他方法。)

答案 1 :(得分:-2)

我使用@ Anna的建议在viewDidLoad中添加视图,但您不需要使用第二个Xib或在代码中设计视图。 你需要的是:

一个。在storyboard / xib文件中的JSQMessagesViewController场景中设计视图。

B中。创建您需要呈现的视图的出口。

℃。在viewDidLoad中使用view.addSubview(myView)(或[self.view addSubview:self.myView]添加您的视图,用于所有objc的视图)

d。那就是它!