[英]Add a subview (created in xib) into a UIView
我有一个UIView,其中包含3个其他子视图。 一开始,我没有将这3个子视图添加到UIView中,而是按如下方式分别创建了它们:
我想动态添加子视图。 所以我尝试如下代码:
将MainView添加到UIViewController
UINib *nib = [UINib nibWithNibName:@"MainView" bundle:nil]; MainView* mainView = [[nib instantiateWithOwner:self options:nil] objectAtIndex:0]; [self.view addSubview:mainView];
到目前为止还可以。 但是现在,在MainView类中,我添加了subView,我崩溃了
UINib *nib = [UINib nibWithNibName:@"SubView1" bundle:nil]; SubView1* subView1 = [[nib instantiateWithOwner:self options:nil] objectAtIndex:0]; [self addSubview:subView1];
我的代码有什么问题?
我不知道为什么它崩溃,因为我从未使用过这种类型。 所以我建议你尝试以下
UIView *mainView=[[[NSBundle mainBundle] loadNibNamed:@"yourNibName" owner:self options:nil] objectAtIndex:0];
[[self view] addSubview:mainView];
以同样的方式
UIView *subView1=[[[NSBundle mainBundle] loadNibNamed:@"yourNibName" owner:self options:nil] objectAtIndex:1];
[mainView addSubview:subView1];
UIView *subView2=[[[NSBundle mainBundle] loadNibNamed:@"yourNibName" owner:self options:nil] objectAtIndex:2];
[mainView addSubview:subView2];
UIView *subView3=[[[NSBundle mainBundle] loadNibNamed:@"yourNibName" owner:self options:nil] objectAtIndex:3];
[mainView addSubview:subView3];
我敢肯定它会反抗
在我看来,就像您将所有子视图都添加到了同一笔尖(或xib)文件中一样。 因此,没有名称为“ SubView1”的笔尖。
要解决此问题,请为每个视图添加一个单独的xib文件:
文件→新建→文件...→用户界面→视图
并相应地命名这些文件,或在视图控制器类中保留对视图的引用。 您可以通过为视图创建出口来实现。 或者,您可以为每个视图分配标签,并使用UIView
方法-viewWithTag:
获得对该特定视图的引用。
但是,我建议使用他的注释中建议的@Manthan方法-如有可能:将所有子视图添加到界面生成器中的mainView并将其hidden
属性设置为YES
。 然后,当您希望显示这些视图时,请使用[yourView setHidden:NO];
在您的代码中。
如果那对您不起作用,我建议您对单个xib文件使用第一种方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.