2011-09-07 93 views
1

我从来没有加载一个包,所以我不知道为什么这不起作用。我不认为它很重要,但这里所讨论的.xib与所有其他.xibs都在相同的资源文件夹中。为什么不在[NSBundle mainBundle]在这里工作?

NSArray *array = [[NSBundle mainBundle] loadNibNamed:@"S3AsyncView" owner:self]; 

返回此错误:

Instance method -loadNibNamed:owner not found. Return type defaults to id 

我觉得这是错误奇怪,因为[一个NSBundle mainBundle]的返回类型当然是一个NSBundle。

回答

1

在NSBundle中没有这样的方法,因此错误。

我猜你正在寻找:

loadNibNamed:owner:options: 

你可以通过nil的选择,因为它期望NSDictionary

所以你的情况:

NSArray *array = [[NSBundle mainBundle] loadNibNamed:@"S3AsyncView" owner:self options:nil]; 

编辑

如果还是不行,请确认你已经包括<UIKit/UIKit.h>

EDIT 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 ]; 
+0

看到编辑... – Macmade

+0

Yoikes,这是一个可可应用程序。我需要什么UIKit,我没有看到任何UI元素? –

+0

查看编辑2 ... – Macmade

1

三件事:

  1. 确保你正确拼写方法名。您提供的错误消息显示方法名称为:-loadNibNamed:owner:options,这是不正确的。 “选项”后应该有冒号。也许你错过了将这个名字粘贴到你的消息中,但这里的教训是仔细检查你使用的是正确的方法名称,没有拼写错误,省略了部分,缺少冒号等。

  2. Make确保你链接到UIKit。 NSBundle是Foundation框架的一部分,但-loadNibNamed:owner:options:方法来自于UIKit的一部分NSBundle上的UIKit Additions类别。如果你没有链接到UIKit,那么NSBundle将不会有这个方法。

  3. 我看到您已从您的标签列表中删除。如果您正在为可可编写代码并尝试加载笔尖,请参阅NSNib类以获取加载笔尖的一些便捷方法。

相关问题