2012-03-12 4 views
1

내 프로그램에는 다섯 개의 버튼이 있습니다. 단추의 선택에 따라 다른 작업이 수행됩니다. 그러나 모든 버튼에 하나의 IBAction 만 지정하면됩니다. 사용자가 단일 IBAction 내에서 어떤 버튼을 선택하는지 감지 할 수있는 방법이 있습니까? 정말 고맙습니다!버튼에서 동작을 얻는 방법?

+0

xcode를 모르지만 단추에 사용할 수있는 ID 필드가 있습니까? –

+0

헤더 파일에 선언하여 인터페이스의 ID 항목을 ... IBOutlet UIButton * myButton1; 그런 다음 이러한 선언을 인터페이스에 연결하여 Xcode가 코드에서 말하는 인터페이스 항목을 알 수 있습니다. –

답변

1

당신의 버튼이 가정 자신이이 같은 기능을 변경할 수 있습니다

@property (strong, nonatomic) UIButton *menuButton; 

:

- (IBAction)actionButtons:(UIButton*)sender { 
    if ([sender isEqual:menuButton]) { 
     NSLog(@"Menu Pressed"); 
    } 
} 

당신이 태그를 사용할 수 있습니다이 방법을 다른 것 (나는 그들이 인터페이스의 어떤 단계에 있는지를 나타내는 데 사용한다)

PD : 버튼이 약해지기를 원할 수도 있습니다. 왜냐하면 그 버튼이 이유 때문에 강하게 링크되어 있습니다.

1

sender은 호출 객체입니다. 위 theActionDone:를 호출 많은 버튼이있는 경우

- (IBAction)theActionDone:(id)sender; 

sender 버튼의 호출 (중 셀 또는 버튼을 제어, 당신은 거기에서까지 당신의 방법을 작동 할 수 있습니다 방법)입니다.

3

각 버튼에 고유 한 tag 속성을 할당하십시오. 그런 다음 IBAction 방법으로이를 확인 :

- (IBAction)theActionDone:(id)sender 
{ 
    UIButton *button = (UIButton *)sender; 

    switch (button.tag) 
    { 
     case 1: 
     { 
      //do stuff for button one 
      break; 
     } 

     ... 
    } 
} 
관련 문제