繁体   English   中英

将子视图(在xib中创建)添加到UIView中

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM