2011-09-07 26 views
1

私はバンドルをロードしたことがないので、なぜこれが動作していないのか分かりません。私は問題ではないと思うが、問題の.xibは他のすべての.xibsと同じResourcesフォルダにある。[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: 

それはあなたのケースでそうNSDictionary

を期待するとしてあなたは、オプションにnilを渡すことができます。

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

EDIT

それはまだ動作しない場合は、<UIKit/UIKit.h>が含まれていることを確認します。

EDIT 2

[OK]を、今私が参照してください。あなたは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

3つのこと:

  1. は、メソッド名の右のスペルをしていることを確認します。エラーメッセージは、メソッド名が-loadNibNamed:owner:optionsのように表示されますが、これは正しくありません。 「オプション」の後にコロンが必要です。おそらくあなたのメッセージにその名前を貼り付けるのを忘れてしまったかもしれませんが、スペルミスや省略された部分、欠けているコロンなどがない正確なメソッド名を使用していることを慎重に確認することです。

  2. UIKitとリンクしていることを確認してください。 NSBundleはFoundationフレームワークの一部ですが、-loadNibNamed:owner:options:メソッドは、UIKitの一部であるNSBundle上のUIKit追加カテゴリから来ています。 UIKitとリンクしないと、NSBundleはそのメソッドを持ちません。

  3. あなたのタグリストからが削除されています。もしあなたがCocoaを書き、ペン先をロードしようとしているのであれば、ペン先をロードする便利な方法についてはNSNibクラスを見てください。

関連する問題