2011-12-21 13 views
42

Chcę wykonać jakąś akcję, gdy UISwitch zmienia swój stan, a więc jest włączany lub wyłączany. Jak mam to zrobic? Muszę przekazać dwa obiekty jako parametry.Jak wywołać akcję, gdy przełącznik UISwitch zmienia stan?

Jest tworzony w kodzie, dlatego nie używa Xib.

+1

sprawdź ten link [działania] (http://stackoverflow.com/a UISwitch/8521373/1072867) – akk

Odpowiedz

107
[yourSwitchObject addTarget:self action:@selector(setState:) forControlEvents:UIControlEventValueChanged]; 

To wywoła poniższy sposób, gdy stan przełącznika zmienia

- (void)setState:(id)sender 
{ 
    BOOL state = [sender isOn]; 
    NSString *rez = state == YES ? @"YES" : @"NO"; 
    NSLog(rez); 
} 
+3

Jak ustawić delegata? Nie widzę właściwości 'delegate' ani funkcji' - setDelegate'. – Joeran

+1

Nie trzeba ustawiać delegata, to jest twój własny koleś z metody;) –

1

Oczywiście możemy zrobić to samo z Swift, oto kod (skompilowane i pracował z najnowszej wersji z Swift 3,1)

Dodaj działanie do przycisku włącznika:

mySwitch.addTarget(self, action: #selector(self.switchValueDidChange), for: .valueChanged) 

i wdrożenie tej metody:

func switchValueDidChange(sender:UISwitch!) { 
    print(sender.isOn) 
} 

lub nawet jeśli nie korzysta się z nadawcą można usunąć:

func switchValueDidChange() { 
    // do your stuff 
} 
Powiązane problemy