如何添加已有UIView的子视图?

时间:2013-07-26 11:30:11

标签: ios uiview addsubview loadnibnamed

使用以下内容我可以创建一个视图,然后将一个nib加载到其中:

CGRect newViewRect = CGRectMake(0, self.view.bounds.size.width - 335, 335, 400);
UIView *newView = [[UIView alloc] initWithFrame:newViewRect];
newView = [[[NSBundle mainBundle] loadNibNamed:@"TheNewViewNib" owner:self options:nil] objectAtIndex:0];

以下是问题,当我的xib文件已经包含UIView时,XCode仅记录" lldb",但是如果我删除UIView,请说明在xib文件中并添加任何其他对象,它显示完全正常。

但是由于我想要加载整个UIView内的所有内容,我更愿意找到一种方法来加载带有UIView的笔尖。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

使用时

 newView = [[[NSBundle mainBundle] loadNibNamed:@"TheNewViewNib" owner:self options:nil] objectAtIndex:0];

此代码通过nib文件的内容重新加载UIView变量“newView”。因此,在此代码范围之前创建UIVew变量是毫无意义的。

如果您的视图是合成的。只需通过自定义类继承UIView,然后为每个复合添加IBOutlet,然后使用这些复合创建xib,并将它们连接到IBoutlets。然后就像上面那样加载xib。

 newView = [[[NSBundle mainBundle] loadNibNamed:@"TheNewViewNib" owner:self options:nil] objectAtIndex:0];

或者为了在没有子类化的情况下访问复合材料,您只需使用subViews的标签即可。在xib中为每个视图设置标签,然后通过[view viewWithTag:tag]访问它们;