1

プログラムでビューにボタンを追加しようとしていますが、次のコードを使用しています。

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button setTitle:@"Click Me" forState:UIControlStateNormal];
[button addTarget:self action:@selector(click:) forControlEvents:UIControlEventTouchDown];
[button setFrame:CGRectMake(50, 20, 80, 70)];
[self addButton:button];

私によると、コードは正しいように見えますが、「不明なアクションのクリック」というエラーが発生します

addbuttonとclickは同じクラスのメソッドであり、コンストラクターにボタンを追加しています

クリック方式の何が問題になっていますか?構文エラーはありますか?

4

4 に答える 4

6

あなたの問題は、あなたがという名前のメソッドを持っているが、clickあなたはそのメソッドがという名前であることをあなたのボタンに伝えているということclick:です。違い(コロン)に注意してください。

実際のメソッド名と一致@selectorするようにに変更します。@seletor(click)

もう1つのオプションは、そのままにして、メソッドを次のように@selector更新することです。clickclick:

- (void)click:(UIButton *)button {
    // button was tapped - do something
}
于 2013-02-21T05:29:45.710 に答える
1

ボタンにアクションを追加する方法のサンプル...。

UIButton *button = [UIButton buttonWithTypeRoundRect];  
[button addTarget:self action:@selector(myMethod) forControlEvents:UIControlEventTouchUpInside];  
button.frame = CGRectMake(10,10,100,50);
//Do some more Configuration of the button like title.. Look at UIButton Class Reference
[self.view addSubview:button];

セレクターのメソッド名の後に小さなコロン(:)が表示される
場合があります。これは、このメソッドが引数を取ることを意味します。コロンはメソッドの名前には何の役割も果たしません。関数に引数を送信しない場合は、関数の名前の後にコロンを付けないでください.....
addtargetオプションでは、selfにmyMethod関数が含まれているため、selfが指定されていることがわかります。ここでは、メソッドを含むそのオブジェクトの参照を指定することになっています。

于 2013-04-04T08:46:14.683 に答える
0

変化する

 - (void)click:(id)sender{ NSLog(@"Button Clicked"); }

またはアクションの変更クリック:クリックするには

[button addTarget:self action:@selector(click) forControlEvents:UIControlEventTouchUpInside];
于 2013-02-21T05:30:21.177 に答える
0

こんにちは、これを試してみてください。-(void)click { // do what ever }つまり、@ selector(click:)のコロンを削除してください。

于 2013-02-21T06:06:26.010 に答える