如何从xib加载视图

时间:2014-03-05 21:27:47

标签: ios

我有一个ViewController,比如VC1,我需要以编程方式加载子视图,例如View1。

我有一个名为View1.xib的xib文件,其文件所有者是View1。

有谁能告诉我如何加载View1?

我尝试过以下方法:

在VC1中,我打电话给

View1 view1 = [[View1 alloc] init];
[[NSBundle mainBundle] loadNibNamed:@"View1" owner:view1 options:nil];
[self.view addSubview:view1];

然而,事实证明,view1对象和从NSBundle调用加载的对象不是同一个。


更新:

在View1.xib文件中,我有一些绑定到View1类的IBOutLet,因此我无法将文件所有者更改为VC1。

2 个答案:

答案 0 :(得分:2)

如果您只是加载一个UIView子类,它具有在xib中定义的布局,那么您不需要设置File的所有者。相反,您应该将顶级对象的类更改为您的子类(View1)的类,然后使用

View1 *view1 = [[NSBundle mainBundle] loadNibNamed:@"View1" owner:nil options:nil].firstObject;

答案 1 :(得分:1)

以下是如何操作:

NSArray *xib = [[NSBundle mainBundle] loadNibNamed:@"View1" owner:self options:nil];
View1 *view1 = [xib objectAtIndex:0];
[self addSubview:view1];

注意:

在界面构建器中构建View1.xib视图时,请保留默认File's Owner并将视图类设置为View1