如何检查选择了哪个UIButton

时间:2012-07-05 22:39:26

标签: ios uibutton

我试图弄清楚哪些UIButton已被选中,一堆,(10)按钮是可选择的并且连接到相同的IBAction方法..但是我不知道如何做到这一点..

我想知道我是否可以在每个按钮中设置一个属性,这样我就可以检查从IBAction获取发件人(id)的时间。但是所有这些都是UIButton的基本细节。 / p>

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

另外作为旁注,每个UIButton都通过IBOutlet连接......但我不知道如何使用它来检查刚刚选择了哪个UIButton ...

任何帮助将不胜感激。

5 个答案:

答案 0 :(得分:3)

:(id)sender传递给您的IBAction方法。测试10个按钮中每个按钮的sender == buttonName。如果为true,则表示您找到了正确的按钮。

答案 1 :(得分:1)

通常当你有一个动作时,它看起来像这样:

- (IBAction)buttonClick(id)sender;

- (IBAction)buttonClick(UIButton *)sender;

如果只有UIButtons可以调用它。 因此sender将成为点击的按钮。

答案 2 :(得分: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...
}

答案 3 :(得分:1)

您可以使用标签。当您分配按钮或将它们放入IB时,您可以为它们设置标签:1,2,3,4 ......等。然后,当调用选择器时(选择器应如下所示:- (IBAction) onButton:(id)sender;),您可以获得如下标记:

UIButton *pressedButton = (UIButton *) sender;

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

干杯, 乔治

答案 4 :(得分:0)

很简单......

    if([myButton isSelected])
    {
        NSLog(@"Selected!");
    }