1

我正在尝试从一堆(10)个按钮中找出哪个 UIButton 已被选中,这些按钮是可选的并且连接到相同的 IBAction 方法..但是我不确定如何执行此操作..

如果我可以在每个按钮中设置一个允许我检查何时从 IBAction 返回发送者(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方法。测试sender == buttonName10 个按钮中的每一个是否。如果为 true,则您已找到正确的按钮。

于 2012-07-05T22:47:05.783 回答
1

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

- (IBAction)buttonClick(id)sender;

或者

- (IBAction)buttonClick(UIButton *)sender;

如果只能UIButtons调用它。sender被点击的按钮也是如此。

于 2012-07-05T22:47:19.373 回答
1

使用 anIBOutletCollection来维护您的按钮列表。当您收到来自任何按钮的消息时,您可以从数组中获取索引。

声明按钮的属性(并在 中合成它@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

您可以使用标签。当您分配按钮或将它们放置在 IB 中时,您可以为它们分别设置一个标签:1,2,3,4...等。Then , when the selector gets called (the selector should look like this: - (IBAction) onButton:(id)sender;) you can get the tag like this:

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 回答