2009-08-31 10 views
3

ここで私の髪を裂いています。これを回避する方法を説明する多くの例を読んだことがありますが、問題を取り除くのに役立つものはありませんでした。NSInvalidArgumentException

IBActionにリンクされたUIViewに単純なボタンがあります。

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[UIViewController buttonPressed:]: unrecognized selector sent to instance 0xd1d5f0' 

タッチアップインサイド:

コードは常に、このエラーメッセージを受信

#import "Contact.h" 

@implementation Contact 

- (IBAction)buttonPressed:(id)sender 
{ 
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Button Pressed" message:@"You pressed the button" delegate:nil cancelButtonTitle:@"Yep, I did." otherButtonTitles:nil]; 
    [alert show]; 
    [alert release]; 
} 

Contact.m

この...

Contact.h

#import <UIKit/UIKit.h> 

@interface Contact : UIViewController { 
} 

-(IBAction)buttonPressed:(id)sender; 

@end 

ですファイルにリンクされているbuttonPressedを使用している所有者。

他のサンプルコードをダウンロードしても問題ありません。私のプロジェクトとペン先は、他のサンプルコードと同じように設定されています。

これを試してデバッグを開始する場合があります。

誰でも手伝ってください。

+0

TouchUpイベントコールバックを確立するためにコードはどのように見えますか? – fbrereto

答えて

5

私はこれと同じ問題を抱えていました。 ViewControllerがTabBarControllerの下にあり、その下にView ControllerでNIB NameをContactに設定しましたが、IdentityペインでClass to Contactを設定しなかったためです。

+1

これはそれでした:) –

+0

同じ問題。私はもっ​​と投票することができればいいと思う。 – Dave

0

正しいコードを貼り付けてもよろしいですか?あなたのContact.mの実装を含む@implementationブロックが含まれている必要があり、定義

Contact.m含まない@interfaceブロック:Interface Builderで

#import "Contact.h" 

@implementation Contact 

- (IBAction)buttonPressed:(id)sender 
{ 
    NSLog(@"buttonPressed"); 
} 

@end 
+0

おっと、そうです。それが貼り付けられている必要があります:) –

+0

また、1つのボタンと1つのIBAction、他のコードとゼロからブランドの新しいプロジェクトを構築しているそれはまだ私に同じ頭痛を与えている:( –

1

は、あなたはどのようなクラスファイルの所有者であることを伝える必要があります。 「ファイルの所有者」アイコンをクリックし、インスペクタのアイデンティティパネル(最後の「i」アイコン)に移動し、クラスを連絡先に変更します。

+0

こんにちは、私はやったまた、ちょうどUIViewとボタン以外に何も入っていない新しいプロジェクトを作成しましたが、それでもまだ起こっています:( –

+0

あなたは確かですか?この部分のエラー: ''*** - [UIViewController buttonPressed: ]:インスタンス0xd1d5f0 'に送信された認識できないセレクタは、UIViewControllerインスタンスがContactインスタンスではなくメッセージを受け取っていることを伝えます。 – iKenndac

+0

+1これは正しい答えだと思いました –

0

just created a brand new project with nothing inside it other than a UIView and a button and it is still happening

これは、あなたが正しく物事を正しく設定していないと思います。これがアプリケーションのnibファイルで、UIViewだけが含まれている場合は、ファイル所有者のタイプをIBに設定しているかどうかに関係なく、ファイルの所有者がアプリケーションの委任者になります。

は、以下のことを試してみてください。

  1. あなたのnibファイルにContactのインスタンスを作成します。UIViewControllerオブジェクトのドラッグを、そしてContactにそのクラスを設定します。

  2. ビューとボタンをContactインスタンスまで配線します。

  3. はそれが動作するかどうか、私たちは知ってみましょう:)

+0

新しいプロジェクトを作成しても問題ありません。それがTabBarControllerからロードされたビューであるという事実と関係があると思われます。 NIB自体は、 IBActionとクラスを修正する必要がありますが、「認識できないセレクタ」がどこに送られているのか分かりません。 助けてくれた皆さんのおかげで、私はそれが何であるかを知るまで兵士になります:) –

関連する問題