私のxibには17個のボタンがあります。そして、タグ値を 1 から 17 に設定しました。
17個のボタンすべてを.hの単一の変数名に接続し、.mの特定のボタンをタグ値で取得する方法を教えてください。
ありがとう
これをテストしたところ、ストーリーボードですべてのボタンを選択し、それらをアシスタントエディターの適切なコントローラーにコントロールドラッグすると、すべてのボタンを表すアウトレットのコレクションを作成できることがわかりました。結果のコードは次のとおりです。
@property (strong, nonatomic) IBOutletCollection(UIButton) NSArray *buttons;
私の経験では不可能です。IBOutlet、つまりInterface Builder Outletは、常にインターフェイスコンポーネント(ボタンなど)とインターフェイス内の変数(IBOutlet UIButton * myButtonなど)の間の単一の接続を参照します。この1対1の関係。
ボタンごとに 1つ必要IBOutlet
なので、17 個すべてを作成する必要があります。ボタンをアウトレットに個別に接続すると、配列でボタンが必要な場合は、イニシャライザー内の配列に配置できます。
ただし、メソッドを節約できます。次のIBAction
ようなメソッドを1つ作成します
-(IBAction)buttonClicked:(id)sender {
}
このメソッドをすべてのボタンに接続し、 のタグを見て、(id)sender
どのボタンがアクションを呼び出したかを判断できます。
17個のボタンに1つの参照を与えることはできませんが、@dasblinkenlightが言ったように17個のボタンに1つのメソッドを割り当てることができます
メソッドをすべてのボタンクリックイベントに設定するだけで、IBAction
タグ値を使用して必要なボタンにアクセスできます
-(IBAction)buttonClicked:(id)sender {
int j = [sender tag];
NSLog(@"Clicked Button %i", j);
}