Iphone 如何同时使用xib和UIView子类?
我想创建两个自定义视图,一种可重用的UI组件,并且不希望在UIView子类的代码中布局UI。我想用xib来做这个。我已经单独使用了xib。我自己使用了UIView子类。但我没有一起用过。我如何将它们彼此“连接”起来?我想使用IBOutlets访问自定义视图中的UILabel 这样行吗Iphone 如何同时使用xib和UIView子类?,iphone,objective-c,cocoa-touch,ios,interface-builder,Iphone,Objective C,Cocoa Touch,Ios,Interface Builder,我想创建两个自定义视图,一种可重用的UI组件,并且不希望在UIView子类的代码中布局UI。我想用xib来做这个。我已经单独使用了xib。我自己使用了UIView子类。但我没有一起用过。我如何将它们彼此“连接”起来?我想使用IBOutlets访问自定义视图中的UILabel 这样行吗 NSArray *xib = [[NSBundle mainBundle] loadNibNamed:@"MyCustomView" owner:self options:nil]; MyCustomView *
NSArray *xib = [[NSBundle mainBundle] loadNibNamed:@"MyCustomView" owner:self options:nil];
MyCustomView *view = [xib objectAtIndex:0];
view.myLabel.text = @"fred";
是的,当您加载不是ViewController父级的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;
}
}
我确实按照我想要的方式做了。我创建了UIView子类,为我拥有的两个UILabel添加了IBOutlets。在Interface Builder中,我将视图类更改为UIView子类,并将两个标签上的引用插座设置为视图。我正在尝试做同样的事情-您知道(a)父视图和(b)自定义UIView本身应该使用什么类名吗?我在我的代码中注意到,我的自定义UIView类名在这两个类名中都有,但这给了我对自定义UIView init方法的递归调用。也就是说,我(a)在使用我的自定义视图的父UIControllerView中,在IB中,因为它是XIB,我使用UIView,我已将类名设置为“clockview”,但是(b)在我实际的clockview自定义UIView(不是UIControllerView)XIB文件中,我做了同样的事情,并将类名设置为“clockview”。我不明白你的意思。在Interface Builder中创建UI布局、连接某些IBOutlet比手动设置CGRect FRAMESSE花费的时间更少