我从未加载过捆绑包,所以我不确定为什么这不起作用。我认为这不重要,但这里讨论的.xib与我所有其他.xibs在同一个Resources文件夹中。
NSArray *array = [[NSBundle mainBundle] loadNibNamed:@"S3AsyncView" owner:self];
返回此错误:
Instance method -loadNibNamed:owner not found. Return type defaults to id
我觉得这个错误很奇怪,因为[NSBundle mainBundle]的返回类型当然是NSBundle。
答案 0 :(得分:1)
NSBundle中没有这样的方法,因此错误。
我猜你在找:
loadNibNamed:owner:options:
您可以将nil
传递给选项,因为它需要NSDictionary
所以在你的情况下:
NSArray *array = [[NSBundle mainBundle] loadNibNamed:@"S3AsyncView" owner:self options:nil];
修改强>
如果仍然无效,请确认您已包含<UIKit/UIKit.h>
。
编辑2
好的,现在我明白了。你用iOS标记了你的问题,但现在你说它是一个Cocoa应用程序。
loadNibNamed:owner:options:
是UIKit的补充,因此只能在iPhone上使用。
在Mac OS X上,您将使用+ (BOOL)loadNibNamed:(NSString *)aNibName owner:(id)owner
类方法。
所以:
NSArray *array = [ NSBundle loadNibNamed: @"whatever" owner: self ];
答案 1 :(得分:1)
三件事:
确保您正确拼写方法名称。您提供的错误消息将方法名称显示为:-loadNibNamed:owner:options
,这是不正确的。 “选项”之后应该有一个冒号。也许你错过了将名字粘贴到你的信息中,但这里的教训是仔细检查你是否使用了正确的方法名称,没有拼写错误,省略了部分,缺少冒号等等。
确保您与UIKit相关联。 NSBundle是Foundation框架的一部分,但-loadNibNamed:owner:options:
方法来自NSKundle上的UIKit Additions类,它是UIKit的一部分。如果你没有链接到UIKit,那么,NSBundle将没有这种方法。
我发现您已从标记列表中删除了ios。如果您正在为Cocoa编写并尝试加载nib,请参阅NSNib
类以获取一些加载nib的方便方法。