2012-07-30 2 views
0

나는 여러 개의 UIButtons가있는 uiviewcontroller를 가지고 있으며, 다시 터치 할 때까지 계속 눌러져 있습니다. 버튼을 판별하기 위해 선택기를 사용하는 방법은 다음 tabButton에,여러 개의 누른 UIButtons를 관리하십시오.

[button1 addTarget:self action:@selector(tapButton:) forControlEvents:UIControlEventTouchUpInside]; 
    [button2 addTarget:self action:@selector(tapButton:) forControlEvents:UIControlEventTouchUpInside]; 
    ... 

내가하고 싶은 것 : 내가있는 viewDidLoad에서 각 버튼을 정의하고 같은 선택 방법 (tapButton)이 그들 모두를 제공 누르면, 다음은 다음과 같이 상태를 변경합니다

- (IBAction) tapButton:(id)sender 
{ 
    if (sender.selected) { 
    sender.highlighted = NO; 
    sender.selected = NO; 
} else { 
    sender.highlighted = YES; 
    sender.selected = YES; 
} 
} 

당신은 정말 할 수 없기 때문에이 단지 pseuodo 코드임을 알 수 있습니다 "sender.selected"또는 "sender.highlighted"하지만 무엇을 먹으 렴 I 달성하려고합니다.

내가 수행 할 수있는 방법이 있습니까? 나는 각 UIButton의 상태를 관리하기 위해 30 개의 "tapButton"메소드 (내가 가지고있는 UIButtons의 개수, 예 ...)를 생성하는 것을 싫어한다.

감사합니다.

+0

왜 당신이 할 수 없어 ... 알파 속성을 사용하여이를 구현할 수 있습니다 sender.selected' 또는'sender.highlighted' ?? 그것들은 유효합니다 ... 그것은 송신자의 논거입니다 (눌려진 버튼입니다). – borrrden

+0

나는 그것을 할 수 있었으면 좋겠지 만, 오류가납니다 ... 이것은 내 인생을 훨씬 쉽게 만들었을 것입니다! – moshikafya

+0

"오류"... 매우 당신을 설명합니다. 아마도 당신의 질문은 그 오류에 관한 것이어야합니까? 나는 항상 이런 식으로 선택을 토글한다. – borrrden

답변

2

당신은 당신의 선택

- (IBAction) tapButton:(id)sender 
{ 
    switch((UIButton*)sender.tag){ 
    case 1: 
    ..... 
    } 
} 
+0

좋은 생각, 나는 그것을 좋아하지만 뭔가 더 "우아한"... + 1을 찾으려고했다. – moshikafya

+0

알려 주시면 알려주세요. –

0
UIButton * selectedButton = [[UIButton allo]init]; 
/*for removing old highlight*/ 
selectedButton.higlighted = NO; 
selectedButton = sender; 
/*for setting new button highlight*/ sender.selected = YES 

위의 코드는 당신을 도울 것에 그런 다음이

button1.tag = 1; 
button2.tag = 2; 
.... 

처럼 각 버튼의 tag을 설정할 수 있습니다. 여기에 마지막 단추 상태를 저장하는 새로운 버튼을 사용하고

당신은이에 대한 스위치 케이스를 사용할 수 있습니다
+0

이 코드는 의미가 없습니다. 첫 번째 줄을 제거하고 두 번째 줄에는'self.selectedButton.highlighted = NO'를 사용해야합니다. – borrrden

+0

귀하의 코멘트를 주셔서 감사합니다 borrrden – Vinodh

0

은 ... 또는 당신은 또한`

-(IBAction) tapButton:(id)sender 
{ 
    UIButton *btn = (UIButton *)sender; 
    if ([btn isSelected]) 
    { 
     btn.selected = NO; 
     btn.alpha = 0.5; 
    } else { 
     btn.selected = YES; 
     btn.alpha = 1; 
    } 
} 
관련 문제