2012-08-11 3 views
0

UIButton의 단추 제목을 프로그래밍 방식으로 변경했습니다. 또한 버튼 제목을 변경하는 작업을 할당했습니다. 이제 버튼을 탭하면 두 버튼 모두 동일한 버튼 제목과 변경된 동작을 트리거합니다. 그러나, 나는 변경된 제목 버튼에 대해 하나의 조치 만 트리거하려고합니다.단추가 변경된 단추 제목을 누르는 동안 두 동작을 트리거합니다.

어떻게 할 수 있습니까? 어떤 도움을 주시면 감사하겠습니다. 당신이 제어 상태 touchupinside에 대해 동일한 버튼에 대한 두 가지 작업을 할당하는 경우

+0

버튼에 하나의 동작 메소드 만 지정하고 매개 변수로 제목 텍스트를 사용하고 if-else 문을 사용하여 다른 명령문을 실행하는 방법을 기반으로합니다 : –

답변

1

두 솔루션을한다. 메서드간에 대상/동작을 전환하거나 일부 상태를 기반으로 수행 할 작업을 결정합니다.

1.

- (void)method1:(id)sender; 
{ 
    [sender removeTarget:nil action:NULL forControlEvents:UIControlEventTouchUpInside]; 
    [sender addTarget:self action:@selector(method2:) forControlEvents:UIControlEventTouchUpInside]; 
} 

- (void)method2:(id)sender; 
{ 
    [sender removeTarget:nil action:NULL forControlEvents:UIControlEventTouchUpInside]; 
    [sender addTarget:self action:@selector(method1:) forControlEvents:UIControlEventTouchUpInside]; 
} 

2A.

- (void)buttonTapped; 
{ 
    if (self.someState) { 

    } else { 

    } 
} 

2b. 대신 두 가지 조건

f([urlresponse status code] == 200) 
{ 
[myButton setTitle:@"Unfollow" forState:UIControlStateNormal]; //title changed 

[myButton addTarget:self action:@selector(unfollowButtonPressed:) forControlEvents:UIControlEventTouchUpInside]; 

} 

그것은 당신의 경우에 도움이 될 수를 만드는

- (void)buttonTapped:(UIButton *)button; 
{ 
    if ([[button titleForState:UIControlStateNormal] isEqualToString:@"First title"]) { 

    } else { 

    } 
} 
+0

감사합니다. Paul. 이것은 완벽하게 작동했습니다. –

0

는 항상 both.You 두 번째를 추가하는 동안 첫 번째 조치를 제거하고 두 번째 자체를 제거하고 선택기 함수의 끝에서 다시 처음을 추가해야합니다 트리거합니다.

다음은 버튼의 기본 동작입니다.

[button addTarget:self:action:@selector(actionOne)forControlEvents:UIControlStateTouchUpInside] 

actionOne에서 첫 번째 동작에 대해 관찰자 제거를 호출하고 두 번째 동작을 추가 할 수 있습니다.

[button addTarget:self:action:@selector(actionTwo)forControlEvents:UIControlStateTouchUpInside] 

그리고 actionTwo 기능에

당신은 반대를

+0

안녕하세요. 도와 주셔서 감사합니다. 그러나 다른 UIControlState를 사용할 때 다른 제목은 동일한 버튼에서 다른 동작을 트리거하지 않습니다. 내 코드 좀 봐. 내가 뭔가 잘못하고있는 것 같아. if ([urlresponse status code] == 200) { [myButton setTitle : @ "언 폴로우"forState : UIControlStateNormal]; // 타이틀 변경 } 경우 ([myButton.currentTitle isEqualToString "관심 등록 해제"@]) { [myButton에 addTarget을 : 자기 조치 : @ 선택기 (unfollowButtonPressed forControlEvents :) : UIControlEventTouchUpInside]; } –

관련 문제