所有 Nibs 都有指定的File's Owner
. IBOutlet 和 IBAction 链接是基于File's Owner
. 所以你可以定义一个视图控制器和两个 Nib,每个 Nib 文件都File's Owner
设置为定义的视图控制器。
也就是说,如果您将File's Owner
所有 KBViewController*.xib 文件设置为 KBViewController 并在某处有一个 KBViewController 对象,您可以通过initWithNibNamed
方法加载所需的 KBViewController*.xib(重新创建视图控制器)
如果你应该一直保持相同的 KBViewController 对象,你可以创建一个没有 Nib 的 KBViewController 对象。在 KBViewController.m 中,使用方法实现loadView
并手动加载 UIView 对象-[NSBundle loadNibNamed]
(以编程方式加载和更改 self.view)。
UIView *someView = [[[NSBundle mainBundle] loadNibNamed:@"SomeNibFile"
owner:self
options:nil] objectAtIndex:0];
self.view = someView;
注意owner:self
上面的代码。它必须与File's Owner
@"SomeNibFile" 匹配。
要更改已加载的视图:
id superview = self.view.superview;
[self.view removeFromSuperview];
UIView *someView = [[[NSBundle mainBundle] loadNibNamed:@"SomeNibFile"
owner:self
options:nil] objectAtIndex:0];
self.view = someView;
[superview addSubview:self.view];
更详细的解释:
资源编程指南 - 以编程方式加载 Nib 文件