我有一个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。
答案 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
。