KVO не работает с UISwitch - PullRequest
       27

KVO не работает с UISwitch

3 голосов
/ 25 августа 2011

Я не могу заставить KVO работать с UISwitch.У меня есть пользовательский UITableViewCell с UISwitch, добавленным через Interface Builder.Я создал IBOutlet для UISwitch и связал его с переменной theSwitch.

- (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");
}

наблюдайValueForKeyPath: ofObject: change: контекст никогда не вызывается!

Ответы [ 2 ]

9 голосов
/ 25 августа 2011

Я не уверен, но возможно, что UISwitch просто не совместим с KVO.

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

[theSwitch addTarget:self action:@selector(switchChanged:) forControlEvents:UIControlEventValueChanged];
// ...
- (void)switchChanged:(UISwitch *)sender {
    if (sender.on) {
        // ...
    }
}
0 голосов
/ 30 августа 2013

Переключатель может не инициализироваться при добавлении наблюдателя.попробуйте добавить наблюдателя в awakeFromNib.

...