/ / KVO nie współpracuje z UISwitch - ios, obserwacja klucza-wartości, uiswitch

KVO nie działa z UISwitchem - ios, obserwacja wartości klucz-wartość, uiswitch

W życiu mnie nie mogę „uzyskać KVO pracy z UISwitch. Mam niestandardowy UITableViewCell z UISwitch dodany przez Builder interfejsu. Stworzyłem IBOutlet dla UISwitch i powiązałem go z theSwitch zmienna.

- (id)initWithCoder:(NSCoder *)coder {
self = [super initWithCoder:coder];
if (self) {
[theSwitch addObserver:self forKeyPath:@"on" options:NSKeyValueObservingOptionNew context:NULL];
}
return self;
}

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
NSLog(@"toggled switch");
}

ObserwacjaValueForKeyPath: ofObject: change: kontekst nigdy nie jest wywoływany!

Odpowiedzi:

8 dla odpowiedzi № 1

Nie jestem pewien, ale możliwe, że UISwitch po prostu nie jest zgodny z KVO.

Bez względu na to, że możesz po prostu użyć zdarzeń kontrolnych:

[theSwitch addTarget:self action:@selector(switchChanged:) forControlEvents:UIControlEventValueChanged];
// ...
- (void)switchChanged:(UISwitch *)sender {
if (sender.on) {
// ...
}
}

0 dla odpowiedzi nr 2

Przełącznik może nie zostać zainicjowany po dodaniu obserwatora. spróbuj dodać obserwatora do awakeFromNib.