ボタンを作成し、タイトルを「ここをクリック」に設定します。そのボタンを押すと、そのボタンのタイトルを取得してログに記録します。これが私のコードですが、どこが間違っていますか?
-(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.
}
Displayvalue:メソッドは次のようになります。
-(void)displayvalue:(id)sender {
UIButton *resultButton = (UIButton *)sender;
NSLog(@" The button's title is %@.", resultButton.currentTitle);
}
(XCodeのドキュメントを確認してください。正しい答えが得られます。)
-(void)displayvalue:(id)sender
{
UIButton *resultebutton= (UIButton*)sender;
NSLog(@"The button title is %@ ", resultebutton.titleLabel.text);
}
私はそれが少し古い質問であることを知っていますが、これはおそらくこれを解決するための最も近い方法です。
NSLog(@"The button title is: %@", [sender currentTitle]);
編集
これは、受信パラメータをUIButton*
に設定したという事実に依存していることに気づきました。デフォルトのid
を使用するのではなく、UIButton
オブジェクトを作成して(id)sender
をそのボタンにキャストします。中間者を切り取り、関数シグネチャを次のように設定します
-(void)buttonPressed:(UIButton*)sender{
NSLog(@"Button title: %@",sender.currentTitle);
}
これは効果的に関数パラメーターをキャストしています
-(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 {
NSLog(@"The title is %@ ", [mybutton titleForState:UIControlStateNormal]);
}