Ios 如何从xib加载视图

Ios 如何从xib加载视图,ios,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 addSubvi

我有一个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文件中,我有一些IBOutLet绑定到View1类,因此我无法将文件所有者更改为VC1

以下是如何做到这一点:

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


在interface builder中构建
View1.xib
视图时,保留默认的
文件所有者
,并将视图类设置为
View1

,如果您只是加载在xib中定义了布局的UIView子类,则无需设置文件所有者。相反,您应该将顶级对象的类更改为子类(View1)的类,然后使用

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

你是不是建议我把这个叫做VC1课?但是,View1.xib的文件所有者不是VC1,而是View1在我的View1.xib中,我有一些IBOutlet绑定到类View1。如果我将文件所有者设置为默认值,则会出现错误:该类与密钥XXX的键值编码不兼容…您在xib中的视图需要是顶级对象。不要把它连接成插座。哦,很好的一个插座!我不知道
firstObject
属性。在这种情况下,
UINib
类就是为您开发的。