「トムとジェリー」、「ライオン キング」などの多数の UIButtons を含むビューがあります。ビュー コントローラーでそれらすべてが同じアクションを呼び出し、異なるボタンを区別してボタンを取得する必要があります。特定の NSString (たとえば、"TomJerry"、"LionKing" などの識別子)。
アイデア:
- 不正使用ボタンのタイトル テキスト プロパティ(カスタム ボタン スタイル、クリア テキスト色)。
- 機能しますが、汚い感じがします... (ボタンがテキストを表示する必要がない場合にのみ機能します。)
- 追加の ivar + プロパティ「context」で
UIButton をサブクラス化します。
- プログラムでボタンを追加するのに最適です。
- しかし、私のビューは Nib から読み込まれるので、すべてのボタンにアウトレットを定義する必要があります (そして、そのコンテキスト プロパティを awakeFromNib または viewDidLoad に設定します)。ブレ…</li>
- 「-(NSString*)context」メソッドの実装が異なる
ボタンごとにサブクラスを作成します。
- うーん…マジ?;-)
- タグを使用してボタンを識別し、タグをボタン固有の文字列にマッピングするための辞書を使用します。
- DRY 違反: タグは、ボタンを識別するための Nib と、対応する文字列を取得するための辞書で、2 回認識/指定する必要があります。
- これまでタグの使用を避けてきました。始める良い機会になるのではないでしょうか?
これを達成するにはどうすればよいですか?アイデア、ベストプラクティス、実装パターンはありますか?
更新:最初の回答を読んだ後 (ありがとう!)、明確にするためにいくつかのポイントを追加する必要があると思います。
上記のアプローチはすべて機能するはずです。ポイントは、私はそれらのどれも特に好きではないということです。どのアプローチを好むか (およびその理由)、または他のより良いアプローチがあるかどうかを尋ねています。
さらなる「要件」:
- 各ボタンをコンセントとして接続したくありません。
- ボタン固有の文字列を一般的な方法で取得したい、つまり、アクション送信者のスイッチをオンにしない
if (sender==self.button1) {…} else if (sender==self.button2) {…}