2011-04-11 5 views
1

UISwitches에 대한 모든 내용은 이미 읽었지만 내 상황에서는 해결할 수 없습니다. 2 개의 UISwitches가 있습니다. 내 코드가 작동하기 위해서는 그 중 하나만 ON이 될 수 있습니다. 나는 어떻게 이것을 성취 할 것인가?iPhone UISwitch가 다른 UISwitch와 반응합니다.

지금까지 내가 해봤 ...

에서 MyClass.h

-(IBAction)sufSwitchChanged:(id)sender; 

MyClass.m

-(IBAction)preSwitchChanged:(id)sender { 
UISwitch *whichSwitch = (UISwitch *)sender; 
BOOL setting = whichSwitch.isOn; 
[newsPre setOn:setting animated:YES]; 
[techPre setOn:setting animated:YES]; 
} 

.... 일을하지만, 만든있는 두 스위치 모두 ON 또는 OFF. 난 그저 둘 다 동시에 켜는 것을 막는 방법을 알아야합니다. 여기에 같은 값으로 두 스위치를 설정하는 방법

답변

0

주의 사항 :

[newsPre setOn:setting animated:YES]; 
[techPre setOn:setting animated:YES]; 

당신은 보낸 사람과 다음 setting의 반대에 다른 하나를 설정하는 하나 확인하고 싶습니다. 이렇게하려면 각 스위치에 태그를 설정하거나 하위 클래스를 만들어야합니다. 어떤 스위치가 있는지 감지하는 방법에 대한 자세한 내용은 this post을 참조하십시오. 여기에는 좋은 정보가 있습니다.

3

두 개의 UISwitches를 모두 등록하여 UIControlEventValueChanged 다른 스위치에 대한 알림을 관찰하십시오. 다음과 같이 설정하십시오 :

- (void)viewDidLoad { // or whatever method is appropriate 
    UISwitch *a = <# initialize a #>; 
    UISwitch *b = <# initialize b #>; 

    [a addTarget:self action:@selector(toggleB:) 
     forControlEvents:UIControlEventValueChanged]; 

    [b addTarget:self action:@selector(toggleA:) 
     forControlEvents:UIControlEventValueChanged]; 
} 

- (IBAction)toggleA:(id)sender { 
    [b setOn:NO animated:YES]; 
} 

- (IBAction)toggleB:(id)sender { 
    [a setOn:NO animated:YES]; 
} 

인터페이스 작성기에서이 관계를 설정할 수도 있습니다.

+0

이것은 단단한 대답처럼 보입니다. +1 – Moshe

+0

이것은 실제 문제에 대해 아무런 언급도하지 않습니다. 관계가 설정되어 있어도 (그는 책을 읽으며, 저도 IB 제작자에서 이루어졌습니다) 작동하지 않습니다. 이러한 관계를 설정하는 방법과 이벤트를 수신하는 방법에 대한 좋은 설명을 제공하고 있습니다. 그러나 핵심 질문은 아닙니다. – JeroenEijkhof

+0

네 말이 맞아. 초기 응답에서 코드를 변경했습니다. –

관련 문제