问题 如何在另一个NIB的视图中加载NIB?


我有两个NIB

ParentViewController.xib
ChildViewController.xib

ParentViewController.xib包含UIView和UIViewController。 ChildViewController.xib包含一个UIButton

我希望ChildViewController.xib加载到ParentViewController.xib的UIView中

我做了以下事情:

  1. 在ParentViewController中为UIView创建了@property
  2. 将连接文件的所有者连接到ParentViewController中的UIView
  3. 将ParentViewController的NIB Name属性中的UIViewController设置为Interface Builder中的ChildViewController
  4. 在ParentViewController中将ChildViewController视图属性设置为UIView

我希望这会在ChildViewController中将ChildViewController加载到我的UIView中,但没有运气。

我确实得到了以下警告,这可能是罪魁祸首:

'View Controller (Child View)' has both its 'NIB Name' property set and its 'view' outlet connected. This configuration is not supported.

我还在ParentViewController的viewDidLoad()中添加了其他代码:

- (void)viewDidLoad {
    [super viewDidLoad];
    ChildViewController *childViewController = [[ChildViewController alloc]initWithNibName:@"ChildViewController" bundle:nil]; 
    childViewController.view = self.myView; 
}

有关为什么ChildViewController没有加载到ParentViewController的UIView中的任何想法?


13071
2018-04-07 02:09


起源



答案:


尝试这个

[self.myview addSubview: childViewController.view];

代替

childViewController.view = self.myView; 

6
2018-04-07 04:23



可以使用Interface Builder来实现吗? - wezzy


答案:


尝试这个

[self.myview addSubview: childViewController.view];

代替

childViewController.view = self.myView; 

6
2018-04-07 04:23



可以使用Interface Builder来实现吗? - wezzy


另一种方法是在Nib中构建“嵌入式”视图(!) ChildView.xib,然后在实例中实例化它 ParentViewController.xib (更改Identity检查器中的类)。没有必要以编程方式 [self.view addSubview:embeddedView] 在父视图控制器中 -viewDidLoad 方法。

我写了我们的意思 将自定义视图Nib嵌入其他Nib中 在一篇冗长的博文中。关键是压倒一切 -awakeAfterUsingCoder: 在里面 ChildView class,将从“父”Nib加载的对象替换为从“child”Nib加载的对象。

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


5
2017-07-19 14:40



那么你从你提供的链接检查'容器视图控制器安排其他视图控制器的内容'部分...从iOS5开始,您可以选择UIViewController包含。 - tapmonkey
链接到你的博客帖是死的顺便说一句。 - expert
@ruslan:适合我......无论如何,这是一个更新: blog.yangmeyer.de/blog/2012/07/09/... - Yang Meyer
@YangMeyer你的Apple文档链接也已经死了。 - moonman239