Iphone 如何在NIB中加载外部视图?

Iphone 如何在NIB中加载外部视图?,iphone,objective-c,cocoa-touch,iphone-sdk-3.0,uiviewcontroller,Iphone,Objective C,Cocoa Touch,Iphone Sdk 3.0,Uiviewcontroller,我有一个ViewController,它有自己的NIB。我想将该笔尖嵌入另一个主笔尖中。如何在Interface Builder中实现这一点,以及如何在代码中引用它?每个NIB都有一个所有者,通常是该NIB中主视图的控制器。您可以在Interface Builder中非常轻松地创建视图控制器的实例。只需拖出一个视图控制器对象并适当地设置NIB属性 问题是您没有办法从Interface Builder中寻址该控制器的视图。您需要编写代码,将嵌入式视图控制器的视图添加为主视图控制器视图的子视图。实际

我有一个ViewController,它有自己的NIB。我想将该笔尖嵌入另一个主笔尖中。如何在Interface Builder中实现这一点,以及如何在代码中引用它?

每个NIB都有一个所有者,通常是该NIB中主视图的控制器。您可以在Interface Builder中非常轻松地创建视图控制器的实例。只需拖出一个视图控制器对象并适当地设置NIB属性

问题是您没有办法从Interface Builder中寻址该控制器的视图。您需要编写代码,将嵌入式视图控制器的视图添加为主视图控制器视图的子视图。实际上如何执行此操作是特定于应用程序的,但在主视图控制器中有一个指向嵌入式视图控制器的插座就足够了

然后,在主视图控制器的
viewDidLoad
实现中,添加嵌入式视图控制器的
view
作为主视图控制器的
视图的子视图。您可能还需要调整嵌入视图的框架,以使其合适。

Sheehan Alam

如果在Xcode中创建一个新的TabBar项目,您可以看到如何从IB中的现有对象加载外部NIB


可以使用IB via(命令-1)为viewController指定NIB



Alex的方法应该可行,但如果我理解正确,您更愿意选择一种方法,而不必在主视图控制器的
-viewDidLoad
方法中以编程方式
[self.view addSubview:embeddedView]

我在一篇很长的博客文章中写下了我们是如何相处的。关键在于在自定义视图中使用coder:
覆盖
-awakafter,将从“主”Nib加载的对象替换为从“嵌入”Nib加载的对象


请注意,我们的自定义控件子类是
UIView
,而不是
UIViewController
(请参见:“您不应该使用多个自定义视图控制器来管理同一视图层次结构的不同部分。”)

我无法将UIViewController拖动到我的XIB中。当我添加UIView时,我没有指定NIB名称的选项。当我将UIViewController添加到我的项目时,它会占用整个视图。有没有办法让它显示在屏幕上显示的其他元素下面?例如,在我已定位的UILabel下面?