在界面构建器中将子视图添加到自定义uiview

时间:2012-06-26 06:13:42

标签: iphone ios

我已经创建了一个由多个子视图组成的custom UIView并将其添加到Nib文件中。 视图正确加载,但是当我尝试从InterfaceBuilder向UIView添加custom UIView时出现问题。 我希望添加的子视图转到我的自定义UIView的最顶层子视图,但不出所料,子视图会添加到根custom UIView

我可以在init的{​​{1}}中做一些魔术,移动添加的视图。

还有其他选择吗?

有什么想法解决这个问题的最佳做法?

3 个答案:

答案 0 :(得分:0)

这似乎是正确的,因为当您添加customView时,在nib文件中,您无法访问其子子视图,这意味着将视图添加到此自定义视图,将它们添加到根视图而不是子视图,

正如您所说,您必须采取一些解决方法才能使这项工作成功,例如使用标签定义视图,然后按代码移动它们

答案 1 :(得分:0)

您需要将Custom UIView添加到subview of your Root view以及根UIView的所有其他子视图作为subview of your Custom View。这样您就可以获得您想要的内容。 您的IB层次结构应该如下...

 --->Root UIView
      --->Custom UIView
           --->UItextField
           --->UIlabel
           --->UiimageView

如果您添加Custom UIView in a code,则需要为所有子视图关联IBoutlet,然后将其全部设为subview of your custom view

答案 2 :(得分:0)

似乎没有任何聪明的解决方案。 相反,我最终覆盖layoutSubviews这样:

-(void)layoutSubviews
{    
    [super layoutSubviews];
    for (UIView *subview in self.subviews){
        if (![self.internalViews containsObject:subview]) {
            [subview removeFromSuperview];
            CGRect f =subview.frame;
            f.origin.y += self.frame.origin.y;
            subview.frame = f;
            [self.contentContainer addSubview:subview];

        }
    }
}

构建视图我将所有子视图添加到数组internalViewscontentContainer是用作所有InterfaceBuilder添加视图的父视图的视图。