25

ボタンを作成し、タイトルを「ここをクリック」に設定します。そのボタンを押すと、そのボタンのタイトルを取得してログに記録したいと思います。これが私のコードです。どこが間違っていますか?

-(void)clicketbutton {
    UIButton *mybutton = [UIButton buttonWithType:UIButtonTypeCustom];
    [mybutton setTitle:@"Click here"  forState:UIControlStateNormal];
    [mybutton addTarget:self  
       action:@selector(displayvalue:)forControlEvents:UIControlEventTouchUpInside]; 
}

-(void)displayvalue:(id)sender {       
    UIButton *resultebutton= [UIButton buttonWithType:UIButtonTypeCustom];

    resultebutton=sender;// pls clear here.. my question here , it it possible or not. if possible how ?
    NSLog(@" The buttontitile is %@ ", [resultebutton.Title] // here also.
}
4

4 に答える 4

72

displayvalue: メソッドは次のようになります。

-(void)displayvalue:(id)sender {       
    UIButton *resultButton = (UIButton *)sender;
    NSLog(@" The button's title is %@.",  resultButton.currentTitle);
}

(XCodeのドキュメントをチェックしてください。正しい答えが得られます。)

于 2009-05-24T22:01:45.103 に答える
13
-(void)displayvalue:(id)sender 
{
    UIButton *resultebutton= (UIButton*)sender;
    NSLog(@"The button title is %@ ", resultebutton.titleLabel.text);
}
于 2012-04-04T12:12:02.917 に答える
3

少し古い質問であることは知っていますが、これはおそらくこれを解決する最も適切な方法です。

NSLog(@"The button title is: %@", [sender currentTitle]);        

編集
これは、受信パラメーターをに設定したという事実に依存していることに気付きましたUIButton*。デフォルトの を使用するのではなくid、オブジェクトを作成してそのボタンUIButtonにキャストします。(id)sender仲介者を切り取り、関数シグネチャを次のように設定するだけです

-(void)buttonPressed:(UIButton*)sender{
  NSLog(@"Button title: %@",sender.currentTitle);
}  

これは関数パラメータを効果的にキャストしています

于 2015-03-11T23:43:47.857 に答える