4

ボタンがあります:

...

UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
[rightButton setTitle:annotation.title forState:UIControlStateNormal];
rightButton.tag = myCustomNumber;
[rightButton addTarget:self action:@selector(showDetails:) forControlEvents:UIControlEventTouchUpInside];
...

そして、ここに IBAction があります:

..
-(IBAction)showDetails:(id)sender{

    // here I want to NSLOG button tag

}
...

どうやってするか?

4

3 に答える 3

11

送信者を UIControl にキャストするだけです

-(IBAction)showDetails:(UIControl *)sender {

    // here I want to NSLOG button tag
    NSLog(@"%d",sender.tag);

}
于 2012-05-31T10:03:18.427 に答える
3

showDetails が常に a から呼び出される場合UIButtonは、メソッドの名前を次のように変更できます。

- (IBAction)showDetails:(UIButton *)sender {
        NSLog(@"%i", (UIButton *)sender.tag);
}

インターフェイス ファイルでもこの​​変更を忘れずに実行してください。

ただし、異なる IBAction 要素から showDetails を使用する場合は、イントロスペクトして送信者が UIButton であるかどうかを確認する必要があります。

- (IBAction)showDetails:(id)sender {
       if ([sender isKindOfClass:[UIButton class]]
       NSLog(@"%i", (UIButton *)sender.tag);
}

編集:これを行う理由は、コードを記述した方法で、sender に動的な型があり、プロパティidがないためです。tag

于 2012-05-31T10:04:15.920 に答える
2
NSLog("%d", (UIButton *)sender.tag);

送信者は UIButton オブジェクトです。それが役に立てば幸い。幸せなコーディング:)

于 2012-05-31T10:01:36.030 に答える