检测用UIButton数组按下哪个button

我有一个像这样的UIButton数组:

@property (nonatomic, retain) IBOutletCollection(UIButton) NSArray *btn_Impact_Collection; 

我有这个function:

 - (IBAction)impactAction:(id)sender; 

在XIB文件中,我有九个button,每个button都通过引用出口集合连接到btn_Impact_Collection数组。 此外,每个button的Touch_inside属性连接到函数ImpactAction。

现在,当点击一个button时,ImpactAction函数被调用,但是在这个函数里面,我怎么知道哪个button被按下?

在此先感谢您的答案!

将发件人投递到UIButton类,并且会给你点击button的实例。 我没有与我的Xcode,但像这样的东西:

 if ([sender isMemberOfClass:[UIButton class]]) { UIButton *btn = (UIButton *)sender; // Then you can reference the title or a tag of the clicked button to do some further conditional logic if you want. if([btn.currentTitle isEqualToString:@"title of button"]) { // do something. } else if(etc...) } 

在界面生成器(1-9)中为每个button设置标签,然后说

 if ([sender tag] == 1) { //First button was pressed, react. } else if ([sender tag] == 2) { //Second button was pressed, react. } // Etc... else { //Last button was pressed, react. } 

所有其他人也一样,或者你可以把它放在一个开关。

而不是做标题的string检查(这是缓慢的,可以是乏味的),你可以:

 - (void)buttonPressed:(id)sender { for( UIButton *button in self.buttonCollection ) { if( sender == button ) { // sender is your button (eg. you can access its tag) } } } 

另一个选项。投送发件人检查是否是一个UIButton,然后切换sender.tag:

 if ([sender isMemberOfClass:[UIButton class]]) { switch ([sender tag]) { case 0: //do stuff for button with tag 0 break; case 1: //do stuff for button with tag 1 break; case 2: .... break; default: break; } }