【问题标题】:How do I add a subview which already has a UIView?如何添加已经有 UIView 的子视图?
【发布时间】:2013-07-26 11:30:11
【问题描述】:

使用以下内容,我可以创建一个视图,然后将一个 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”,但是假设我删除 xib 文件中的 UIView 并添加任何其他对象,它会完美显示很好。

但由于我想加载整个UIView 以及其中的所有内容,我更喜欢找到一种方法来加载带有UIView 的笔尖。

感谢您的帮助。

【问题讨论】:

    标签: ios uiview addsubview loadnibnamed


    【解决方案1】:

    当你使用时

     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] 访问它们;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-06
      • 2011-04-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多