She*_*lam 12 iphone cocoa-touch objective-c interface-builder
我有两个NIB
ParentViewController.xib
ChildViewController.xib
Run Code Online (Sandbox Code Playgroud)
ParentViewController.xib包含一个UIView和一个UIViewController.ChildViewController.xib包含一个UIButton
我希望ChildViewController.xib加载到ParentViewController.xib的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.
Run Code Online (Sandbox Code Playgroud)
我还在ParentViewController的viewDidLoad()中添加了其他代码:
- (void)viewDidLoad {
[super viewDidLoad];
ChildViewController *childViewController = [[ChildViewController alloc]initWithNibName:@"ChildViewController" bundle:nil];
childViewController.view = self.myView;
}
Run Code Online (Sandbox Code Playgroud)
有关为什么ChildViewController没有加载到ParentViewController的UIView中的任何想法?
小智 6
试试这个
[self.myview addSubview: childViewController.view];
Run Code Online (Sandbox Code Playgroud)
代替
childViewController.view = self.myView;
Run Code Online (Sandbox Code Playgroud)
另一种方法是在Nib中构建"嵌入式"视图(!)ChildView.xib,然后在ParentViewController.xib(在Identity检查器中更改类)中实例化它.不需要[self.view addSubview:embeddedView]在父视图控制器的-viewDidLoad方法中以编程方式.
我写了一篇如何在一篇冗长的博客文章中将自定义视图Nib嵌入其他Nib中的方法.关键是-awakeAfterUsingCoder:在ChildView类中重写,将从"父"Nib加载的对象替换为从"child"Nib加载的对象.
请注意,我们的自定义控件子类UIView不是UIViewController(请参阅Apple在自定义视图控制器上的文档:"您不应使用多个自定义视图控制器来管理同一视图层次结构的不同部分.")
| 归档时间: |
|
| 查看次数: |
6521 次 |
| 最近记录: |