2013-07-20 5 views
1

어떤 버튼을 눌렀는지 감지 할 수 있기를 원합니다. 단추를 눌렀을 때 자동으로 호출 될 수있는 UIButton 클래스 메서드가 있는지 궁금합니다.이 메서드는 눌려진 단추의 텍스트 나 태그를 찾아서 변수에 전달할 수 있습니까? 또는 동일한 객관적 - c 이벤트 방법?어떤 버튼을 눌렀는지 감지

이 주제가 전에 게시 된 적이 있습니다.

.H 파일

- (IBAction)buttonClicked:(UIButton *)sender; 

에서하는 .m 파일에서 나는 또한의 buttonPressed 같은 이름을 가진 다른 예를 보았다

- (IBAction)buttonPressed:(UIButton *)sender{ 
// Do something her to display which button pressed 
} 

: 일반적인 응답이 해결책이 될 것이라는 점을 것으로 보인다 , onButtonTao 등

그래서이 메서드는 각 버튼에서 호출되어야한다고 가정합니다. 그러나,이 작동하지 않습니다, xcode 하나 이상의 단추를 동일한 메서드를 할당 할 때 불평. 스택에서 여기에 게시

다음의 예

, 프로그래밍 방식으로 동일한 작업을 사용하지만 :

for(int i = 0; i < 5; i++) { 
    UIButton* aButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    [aButton setTag:i]; 
    [aButton addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside]; 
    [aView addSubview:aButton]; 
} 

// then ... 

- (void)buttonClicked:(UIButton*)button 
{ 
    NSLog(@"Button %ld clicked.", (long int)[button tag]); 
} 

그래서, 내가 여기에 놓친 거지 무엇을, 왜 Xcode의 여러 버튼에 같은 ​​방법으로 동의하지 않는 이유는 무엇입니까? 그리고 각각의 버튼에 특정 동작을 연결하지 않고 어떤 버튼이 눌러 졌는지 탐지하는 다른 방법이 있습니까?

+1

Xcode는 어떤 방식으로 신고합니까? – Wain

+1

여러 액션을 동일한 액션 메소드에 연결하는 것이 가장 확실합니다. 문제에 대해 더 구체적으로 설명해야합니다. –

답변

0

하나 이상의 버튼을 Xcode의 동일한 작업 방법에 연결할 수 있습니다. 작성하고 .H 파일에 에 기존의 행동을 첫 번째 액션, 제어 드래그 나머지 버튼을 연결 한 후 :

enter image description here

는 그런 다음 속성 관리자의 버튼에 다른 태그를 지정할 수 있습니다 , 및 조치 방법에서 [sender tag]을 확인하십시오.

같은 이름으로 새 작업을 만드는 경우 Xcode 은 "중복 선언"으로 인해 컴파일러 오류 이 발생하는 동일한 이름으로 다른 메서드를 만듭니다.

+0

나는 대답을 얻었을 때 "당연히"느낄 수있는 것이 너무 단순하다는 것을 알고있었습니다 .--) 감사합니다! –

0

코드에이 Sample을 복사하여 붙여 넣으려고하는 것 같습니다. 제대로 작동하지 않는 것 같습니다. 맞습니까? 프레임을 단추에 제공해야합니다. 여기

작동 코드이다 : 여기서

for(int i = 0; i < 5; i++) 
{ 
    UIButton* aButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    aButton.frame = CGRectMake(10 + i*50,10,50,50); 
    [aButton setTag:i]; 
    [aButton addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside]; 
    [self.view addSubview:aButton]; 
} 

프레임 달리 버튼이 중첩 될 정적이어야한다.

관련 문제