0

エラーが発生します

"012-02-10 13:54:52.570 HelloWorld [14275:10103]-[HelloWorldViewController buttonPressed]:認識されないセレクターがインスタンス0x6cc0c50に送信されました2012-02-10 13:54:52.572 HelloWorld [14275:10103 ] *キャッチされない例外'NSInvalidArgumentException'、理由:'-[HelloWorldViewController buttonPressed]:認識されないセレクターがインスタンス0x6cc0c50に送信されました'"。

これは問題のあるテキストです:

-(void)buttonPressed:(id)sender {
    UIButton *button = (UIButton*)sender;
    NSString *text = [button titleForState:UIControlStateNormal];
    NSLog(@"%@",text);
}

コードを次のように変更すると、これがわかります。

-(void)buttonPressed {
    NSLog(@"Button Pressed");
}

その後、正しく動作します。

ただし、メッセージを送信したコンポーネントからのテキストが必要です。コンポーネントは、IBでドラッグアンドドロップされません。それらは割り当てられ、初期化され、loadViewメソッドに配置されます。各ボタンに、アクションリスナーとしてbuttonPressedを追加しました。

4

3 に答える 3

3

エラーunrecognized-selectorは、が欠落していることが原因である可能性があります:

[yourbutton addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];

それ以外の

[yourbutton addTarget:self action:@selector(buttonPressed) forControlEvents:UIControlEventTouchUpInside];

最初のケースでは、を呼び出します-(void)buttonPressed:(id)sender。2番目では、代わりにを呼び出します-(void)buttonPressed

ただし、より多くのコードを提供するとUIButton、何が起こっているのかを理解するのが簡単になる可能性があります。

于 2012-02-10T14:16:13.840 に答える
1

最初の(機能していない)場合はあなたが持って-(void)buttonPressed:(id)senderおり、2番目の(機能している)場合はあなたが持っています-(void)buttonPressed。明らかに、ボタンは引数なしで関数を呼び出します。

于 2012-02-10T14:13:32.303 に答える
1

これは、forボタンタッチイベントを追加した場合に発生する可能性があり、 withメソッド名を@selector(buttonPressed:)入力するのを忘れています。:

あなたは同じことを確認することができます。

于 2012-02-10T14:15:59.050 に答える