我试图弄清楚哪些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 ...
任何帮助将不胜感激。
答案 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!");
}