1

たくさんのUIButtonから、(10)選択可能で、同じIBActionメソッドに接続されているボタンを見つけようとしています。しかし、これを行う方法がわかりません。

IBActionからsender(id)を取り戻すときに確認できる、各ボタンに設定できる属性があるかどうか悩んでいました。しかし、UIButtonの基本的な詳細だけがわかります。

<UIRoundedRectButton: 0x1c576e70; frame = (20 8; 57 57); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0x1c5931e0>>

また、補足として、各UIButtonはIBOutletを介して接続されています。しかし、これを使用して、どのUIButtonが選択されたかを確認する方法がわかりません...

どんな助けでも大歓迎です。

4

5 に答える 5

3

メソッドに渡し:(id)senderますIBAction。10 個のボタンのそれぞれについてかどうかをテストsender == buttonNameします。true の場合、正しいボタンが見つかりました。

于 2012-07-05T22:47:05.783 に答える
1

を使用しIBOutletCollectionて、ボタンのリストを維持します。いずれかのボタンからメッセージを受信すると、配列からインデックスを取得できます。

ボタンのプロパティを宣言します (そして で合成し@implementation、単一の に行うように IB にボタンを追加しますIBOutlet):

@property (nonatomic,strong) IBOutletCollection(UIButton) NSArray *buttons;

あなたのアクションメソッドで:

- (IBAction)buttonAction:(id)sender
{
    // sender = button that fired the action
    NSInteger index = [self.buttons indexOfObject:sender];
    // ... do more stuff...
}
于 2012-07-05T22:49:11.273 に答える
1

通常、アクションがある場合、次のようになります。

- (IBAction)buttonClick(id)sender;

また

- (IBAction)buttonClick(UIButton *)sender;

UIButtonsそれを呼び出すことができれば。クリックsenderされたボタンも同様です。

于 2012-07-05T22:47:19.373 に答える
1

タグを使用できます。ボタンを割り当てるとき、または IB に配置するときに、それぞれにタグを設定できます: 1,2,3,4... など。次に、セレクターが呼び出されると (セレクターは次のようになります:) - (IBAction) onButton:(id)sender;、次のようにタグを取得できます。

UIButton *pressedButton = (UIButton *) sender;

NSLog(@"you pressed button %d",pressedButton.tag);

乾杯、ジョージ

于 2012-07-05T22:53:32.600 に答える
0

とてもシンプル...

    if([myButton isSelected])
    {
        NSLog(@"Selected!");
    }
于 2014-02-08T08:49:00.837 に答える