私が開発しているiPhone用に開発しているアプリには多くのボタンがあり、すべてのボタンが同じクラスを異なるパラメーターで呼び出すようにしたい
たとえば、button1 で displayimageclass を呼び出したい
button2 は同じクラス displayimageclass を呼び出す必要があるため、別のメソッドが同じクラスを呼び出す方法と、同じクラスで、特定のクラスへの呼び出し元から別のボタンを取得する方法。
私が開発しているiPhone用に開発しているアプリには多くのボタンがあり、すべてのボタンが同じクラスを異なるパラメーターで呼び出すようにしたい
たとえば、button1 で displayimageclass を呼び出したい
button2 は同じクラス displayimageclass を呼び出す必要があるため、別のメソッドが同じクラスを呼び出す方法と、同じクラスで、特定のクラスへの呼び出し元から別のボタンを取得する方法。
ボタンに tag プロパティを追加する必要があります。あなたのボタンが
button1.tag =1;
button2.tag =2;
button3.tag =3;
ボタンをクリックすると、関連するボタンのタグ番号が NSLog に表示されます。つまり、あなたが望む結果が得られます。
- (IBAction)buttonClicked:(id)sender {
UIButton* button = (UIButton *)sender;
NSLog(@"The number of tag:%d",button.tag);
}
お役に立てると思います。
それはかなり標準的です。必要な数の IBAction メソッドを定義するだけです。
viewController の .h ファイルで:
- (IBAction)actionButton1:(UIButton *)sender;
- (IBAction)actionButton2:(UIButton *)sender;
- (IBAction)actionButton3:(UIButton *)sender;
そして、その .m ファイルで:
{
//react here to button1 pressed
}
- (IBAction)actionButton1:(UIButton *)sender
{
//react here to button1 pressed
}
- (IBAction)actionButton2:(UIButton *)sender
{
//react here to button2 pressed
}
- (IBAction)actionButton3:(UIButton *)sender
{
//react here to button3 pressed
}
次に、アクションをボタンのイベントに関連付けます (TouchUpInside が最も適切だと思います)。
次のようにアクション メソッドを実装できます。
- (IBAction)action:(UIButton *)sender
{
//sender will be different for different button
}
ボタンのタグ値を設定し、それらのボタンを次のように取得します
- (IBAction)action:(UIButton *)sender
{
UIButton *btn = (UIButton*)sender;
}
1) 同じ動作で同じメソッドを実行する複数のボタン 2) 同じメソッドを実行するが、ボタンの特性に基づいて異なる動作をする複数のボタン 3) 独自のメソッドを実行する各ボタン。
1) 同じ IBAction に複数のボタンを登録できます。それらはすべてそれを呼び出して同じコードを実行します 2) メソッドでは、すべてのボタンが登録されています (参照: 1) UIButton クラスをサブクラス化することにより、ボタンを並べ替えることができます、ボタンが実行する必要があることを表す列挙値を指定し、呼び出されたメソッドでスイッチを使用して列挙値をチェックして、必要な動作をトリガーします
UIBarButtonItem には既にこのタグ プロパティがあるため、Interface Builder で各 UIBarButtonItem に値を指定して使用し、次のメソッドを呼び出すように設定することができます。
- (IBAction) myButtonsMethod:(id)object
if ([object isKindOfClass:[UIBarButtonItem class]])
{
switch ([(UIBarButtonItem *)object tag])
{
case myFirstTagValue
...
}
3)@Hermann Kleckerのソリューションは正しいものです。