iPhone UISwitch реагирует с другим UISwitch - PullRequest
1 голос
/ 11 апреля 2011

Я уже прочитал все о UIS-переключателях, но я не могу понять их в моей ситуации.У меня есть 2 UIS-переключателя.Чтобы мой код работал, можно включить только один из них.Как бы я это сделал?

Пока я пробовал ...

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];
}

...., который работал, но включал и выключал оба переключателя.Мне просто нужно выяснить, как предотвратить их одновременное включение.

Ответы [ 2 ]

3 голосов
/ 11 апреля 2011

Зарегистрируйте оба UIS-переключателя для наблюдения 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 голосов
/ 11 апреля 2011

Обратите внимание, что вы устанавливаете оба переключателя на одно и то же значение здесь:

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

Вы хотите проверить, какой из них является отправителем, а затем установить другой в противоположность setting.Для этого вам нужно будет установить тег для каждого переключателя или, возможно, сделать его подклассом.Для получения дополнительной информации о том, как определить, какой именно переключатель, см. в этом сообщении , в котором содержится полезная информация.

...