質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

iOS 8

iOS 8(アイ・オーエス8)は、アップル社が2014年9月に発表したオペレーティングシステムです。iPhone 4sより対応しています。デザイン性の変更はなく、アプリや各種機能が強化されています。また、サードパーティ開発者のために、多くのAPIが開放されています。

Q&A

解決済

1回答

2939閲覧

作成したボタンの名前に変数名を使用したいです

shin_11

総合スコア20

Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

iOS 8

iOS 8(アイ・オーエス8)は、アップル社が2014年9月に発表したオペレーティングシステムです。iPhone 4sより対応しています。デザイン性の変更はなく、アプリや各種機能が強化されています。また、サードパーティ開発者のために、多くのAPIが開放されています。

0グッド

0クリップ

投稿2015/03/07 22:15

ユーザーがボタンをタップしたらUIButtonが生成される仕組みを作っているんですが、生成されるUIButtonに変数で番号をつけて区別したいと考えています。
UIButtonの名前に変数を使うことは可能でしょうか?

コードはこんな感じです

lang

1int ButtonNumber; 2 3//ボタン作成 4- (void)CreateButton{ 5 ButtonNumber++; 6 UIButton *button(ここに変数の番号を入れたいです)=[UIBu tton buttonWithType:UIButto nTypeRoundedRect]; 7 //ボタンを表示する横位置、縦位置、横幅、縦幅を設定する 8 button.frame = CGRectMake(Coordinate_X, Coordinat e_Y, 30, 30); 9 //文字を表示 10 [button setTitle:@"あ" forState:UIControlStateNor mal]; 11 //Viewにボタンを追加して表示する。 12 [self.view addSubview:button]; 13 [button addTarget:self 14 action:@selector(hoge:) forControlEven ts:UIControlEventTouchUpInside]; 15 }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

CreateButton関数内の変数名はそこでしか使えないので、そこを考えても意味がないと思います...

生成したUIButtonオブジェクトを区別するにはsettagメソッドでタグをつける方法が一般的です。
生成されるたびにユニークになるButtonNumberの値を設定すれば区別できます。
タッチイベントで呼ばれるhogeメソッドでは、パラメータでもらえるオブジェクトからタグを調べればどのボタンに対するイベントかは判別できます。

投稿2015/03/08 09:27

osmoc-1970

総合スコア124

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shin_11

2015/03/08 12:25

タグを設定すれば良かったんですね ありがとうございます
Mitsuyoshi

2015/03/20 17:02

UIViewをタグで管理することは、極めて検知されにくいバグを生む可能性があるので、配列のインスタンス変数に格納したほうが無難です。 もしタグで管理するのなら、1000や10000などの大きなインデックスから始めるようにしましょう。 タグを使用する場合、viewの取得はsomeView.viewWithTag()を使うことになりますが、このメソッドはsomeViewのsubviewを再帰的に検索します。 そのため、someView以下に同じタグを持つviewが複数あった場合に取り違えが起こる可能性がでてきます。 また、UIViewはデフォルトでtag=0に設定されているため、タグのインデックスを0から開始していた場合に高確率で取り違えられてしまいます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問