在使用NIB文件创建UIView实例时链接IBOutlets

时间:2011-05-20 17:36:52

标签: uiview subclass nib iboutlet

我使用NIB文件的内容创建了一个UIView对象,如下所示:

self.results = [[[NSBundle mainBundle] loadNibNamed:@"ResultsView" owner:self options:nil] lastObject];
self.results.frame = CGRectMake(0, 0, 320, 500);

self.results实际上是UIView的子类:

@interface GameResultsView : UIView {
  UILabel *title;
}
@property (nonatomic, retain) IBOutlet UILabel *title;

@end

我已通过Interface Builder将title中定义的GameResults属性与UILabel对象相关联。但在执行期间,当视图分配给SIGABRT时,应用程序会停止并显示self.results消息:

-[UILabel copyWithZone:]: unrecognized selector sent to instance 0x4c2f780
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UILabel copyWithZone:]: unrecognized selector sent to instance 0x4c2f780'

似乎标签根本无法连接。这样做的正确方法是什么(如果有的话)?我的目的是将此自定义视图添加到UIScrollView对象。

谢谢!

更新:我正在使用Xcode 4

1 个答案:

答案 0 :(得分:1)

您可以像这样加载笔尖:

UINib * nib = [UINib nibWithNibName:aName bundle:nil];

NSArray * nibContent = [nib instantiateWithOwner:self options:nil];

for (id aView in nibContent) {
    if ([aView isKindOfClass:[GameResultsView class]]) {
         return aView;
    }
}

这将返回GameResultsView的第一次出现。