すべてのボタンが同じ IBAction に接続できるようにするには、いくつかの UIButtons が必要です。これにより、コードをコピーして貼り付けることなく、すべてのボタンで同じことを行うことができます。これを行う方法があれば教えてください!私の鼻のすぐ下にあるかもしれませんが、見つかりません。ありがとう!
4 に答える
同じターゲットとセレクターを各ボタンに追加するだけです。
[button1 addTarget:self
action:@selector(buttonClicked:)
forControlEvents:UIControlEventTouchUpInside];
[button2 addTarget:self
action:@selector(buttonClicked:)
forControlEvents:UIControlEventTouchUpInside];
// etc.
このために、各ボタンに IBOutlet を設定するか、アウトレットを使用している場合は各ボタンにタグを設定し、このコードを使用する必要があります.h
@interface RootViewController_Phone : UIViewController
{
IBOutlet UIButton *btn1;
IBOutlet UIButton *btn2;
}
- (IBAction)buttonPressed:(id)sender;
-(void)CallButtonsMethod;
@end
.mファイルに
- (IBAction)buttonPressed:(id)sender{
if([sender isEqual:btn1])
{
[self CallButtonsMethod];
}
if([sender isEqual:btn2])
{
[self CallButtonsMethod];
}
}
-(void)CallButtonsMethod
{
//your Code
}
を使用しIBOutletCollections
ます。
そのためのチュートリアルは次のとおりです:http: //useyourloaf.com/blog/2011/03/28/interface-builder-outlet-collections.html
通常、コード内の既存のIBAction にIB の複数のボタン (または 1 つのボタンでさえも) を接続することはできません。ファイル。Xcode は、ドラッグ先のファイルに新しいアクションを作成しようとしますが、既存のアクションには接続しません。[これは、Xcode 4.6.1 およびいくつかの以前の (おそらくすべての) バージョンに当てはまります。]
次のリンクで受け入れられた回答のアプローチは、IBAction がボタンを含むビューの「ファイル所有者」であるビュー コントローラーにある場合に機能します。
.xib 内のオブジェクトを既存の IBAction に接続する
ただし、IBAction をビュー コントローラーのクラスではなく、ビュー自体のクラスに配置する場合は、次の方法が有効です。
最初に IB のキャンバスにボタンを1 つだけドラッグします。ボタンからビューの .m ファイルに Control キーを押しながらドラッグします。
ドラッグした行をコードの実装セクションの空きスペースにドロップします。小さなポップアップ ダイアログ ボックスで新しい IBAction を定義します。これで、IBAction に接続された 1 つのボタンができました。
オブジェクト ライブラリからさらにボタンをドラッグする代わりに、Option キーを押しながら元のボタンから新しいボタンをドラッグします。この新しいボタンは、元のボタンと同じ IBActions に接続されます。(非常に多くのボタンを作成する必要があり、これが面倒な場合は、作成済みのボタンを同時に選択し、Option キーを押しながらドラッグして、一度にさらに多くのボタンを作成できます。)