如何一起使用xib和UIView子类?

Ron*_*Ron 20 iphone cocoa-touch objective-c interface-builder ios

我想创建两个自定义视图,可重复使用的排序UI组件,并且宁愿不布置在UIView子类代码的UI.我想用xib.我自己使用了一个xib.我已经通过iteself使用了一个UIView子类.但我没有一起使用它们.我如何将它们"附加"到彼此?我想使用IBOutlets在我的自定义视图中访问UILabels.

这种事情会起作用吗?

NSArray *xib = [[NSBundle mainBundle] loadNibNamed:@"MyCustomView" owner:self options:nil]; 
MyCustomView *view = [xib objectAtIndex:0];
view.myLabel.text = @"fred";
Run Code Online (Sandbox Code Playgroud)

Jus*_*tin 14

是的,这是当你加载不是viewControllers父项的xib时的工作方式

编辑2013年8月15日:

您不能总是假设您将从返回的NSArray的索引0中获得您正在寻找的内容,这使得使用类型检查变得更好.

NSArray *xibArray = [[NSBundle mainBundle] loadNibNamed:@"MyCustomView" owner:nil options:nil];
MyCustomView *myView = nil;
for (id xibObject in xibArray) {
//Loop through array, check for the object we're interested in.
    if ([xibObject isKindOfClass:[MyCustomView class]]) {
        //Use casting to cast (id) to (MyCustomView *)
        myView = (MyCustomView *)xibObject;
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 我确实按照我想要的方式工作.我创建了UIView子类,为我拥有的两个UILabels添加了IBOutlets.在Interface Builder中,我将视图类更改为我的UIView子类,并将我的两个标签上的引用插座设置为视图. (2认同)