2011-08-25 67 views
3

對於我而言,我無法使用KVO與UISwitch一起工作。我有一個通過Interface Builder添加了UISwitch的自定義UITableViewCell。我爲UISwitch創建了一個IBOutlet並將其鏈接到theSwitch變量。KVO不能與UISwitch配合使用

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

observeValueForKeyPath:ofObject:change:context永遠不會被調用!

回答

8

我不知道,但它可能是UISwitch根本不是志願兼容。

沒關係,因爲你可以用控制事件:

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

這就是我現在正在做的,它的工作原理,但我在其他地方使用KVO,所以我想保持我的代碼一致。像這樣的事情應該只是工作。感謝您的建議。 –

0

精選完美男可能不會當你添加的觀察者已被初始化。嘗試在awakeFromNib中添加觀察者。

+0

實際上,並非所有的Apple類都符合KVO。這是這裏的問題。 –

相關問題