ストーリーボードには、36個の異なるボタンがある巨大なクレイジーなシーンがあり、クリックするとそれぞれが異なる意味を持ちます。私は本当に36の異なるメソッドを作成したくないので、36のボタンの1つが押されたときに呼び出されるメソッドでボタンのタイトルまたはボタンの名前を参照するにはどうすればよいですか。
これはおそらく簡単な質問ですが、私はiOSとObjectiveCを初めて使用します...
ありがとう!
ストーリーボードには、36個の異なるボタンがある巨大なクレイジーなシーンがあり、クリックするとそれぞれが異なる意味を持ちます。私は本当に36の異なるメソッドを作成したくないので、36のボタンの1つが押されたときに呼び出されるメソッドでボタンのタイトルまたはボタンの名前を参照するにはどうすればよいですか。
これはおそらく簡単な質問ですが、私はiOSとObjectiveCを初めて使用します...
ありがとう!
次のように、単一のメソッドを作成できます。
- (IBAction)buttonTapped:(id)sender{
// The button that was tapped is called "sender"
// This will log out the title of the button
//NSLog(@"Button: %@", sender.titleLabel.text);
//Edit: You need a cast in the above line of code:
NSLog(@"Button: %@", ((UIButton *)sender).titleLabel.text);
}
その後、Interface Builder を使用してすべてのボタンに接続できます。どのボタンがタップされたかをテストするために、何らかの if/else ロジックを使用できます。
titleLabel プロパティを確認するか、IBOutlet
各ボタンに を割り当てて確認することができます。
例えば:
if([sender isEqual:buttonOutlet1]){
//If this button is attached to buttonOutlet1
//do something
}
または、コンセントを気にせずに、各ボタンのラベルを使用することもできます。
3 番目のオプションは、コードでボタンを生成して配置し、ボタンの配列の要素としてアクセスすることです。
4 番目のオプションは、ボタンにタグを追加し、関数でボタンのタグを確認することです。
各ボタンに一意のタグ値を与えます。IBAction では、sender.tag はどのボタンがタップされたかを示します。
ボタンの押下を処理するために設定した IBAction ルーチンには、sender
パラメーターがあります。それを調べて決める。
-(IBAction)myButtonAction:(id)送信者 {
if ([sender tag] == 0) {
// do something here
}
if ([sender tag] == 1) {
// Do some think here
}
}
// 言い換えると
-(IBAction)myButtonAction:(id)送信者 {
NSLog(@"Button Tag is : %i",[sender tag]);
switch ([sender tag]) {
case 0:
// Do some think here
break;
case 1:
// Do some think here
break;
default:
NSLog(@"Default Message here");
break;
}
-(IBAction) buttonPress: (id) sender {
UIButton *pressedButton = (UIButton *)sender;
NSString *buttonTitle = [pressedButton currentTitle];
if ([buttonTitle isEqualToString: @"SomeTitle"]) {
//do work for that button.
}
}
さまざまな NSString メソッドを使用して、どのボタンが押されたかを比較またはフィルタリングし、if またはスイッチを介して処理できます。
それは非常に簡単ですが、あなたは新しいので、ここに答えがあります.
(スタンフォードの cs193p コースによると、2010 年から 2011 年秋にかけて (これは彼らが電卓アプリで行ったことです))、UIButton である引数を受け取るメソッドを作成します。例えば:
- (IBAction) someMethodThatDoesSomething:(UIButton *)sender;
sender.titleLabel.text
次に、他の解決策があるかどうかわからないに従って、if ステートメントを作成します。お役に立てれば!