0
我瘋了,我在網上到處尋找,但我總是發現KVO觀察的代碼相同。然而我的observeValueForKeyPath:永遠不會被調用;這是一個簡單的代碼,我用它來觀察的UILabel taximeterValue:UILabel KVO觀察
-(id) initWithCoder:(NSCoder *)aDecoder{
self=[super initWithCoder:aDecoder];
if (self){
[taximeterValue addObserver:self forKeyPath:@"text" options:(NSKeyValueObservingOptionNew |
NSKeyValueObservingOptionOld) context:NULL];
}
return self;
}
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary*)change context:(void*)context {
if ([keyPath isEqual:@"text"]) {
if (myBookingAlert) myBookingAlert.taximeterValue=self.taximeterValue;
NSLog(@"the text changed");
// put your logic here
}
// be sure to call the super implementation
// if the superclass implements it
[super observeValueForKeyPath:keyPath
ofObject:object
change:change
context:context];
}
這是一個插座,所以它可能不是零。發佈此查詢之前,我當然改變了它。此外,更改由setText完成。我沒有使用changeValueForKey函數,因爲我讀它們不是必需的。 –
一個插座可以是零。事實上,在'initWithCoder:'期間,插座可能是零,因爲在nib中創建的插座連接在*'initWithCoder:'返回之後,並且在調用'awakeFromNib'之前設置。嘗試將'addObserver:...'調用移動到'awakeFromNib'。 –
閱讀關於[「資源編程指南*」中的「對象加載過程」](http://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/LoadingResources/CocoaNibs/CocoaNibs.html#//apple_ref/doc/uid/10000051i-CH4-SW19)。 –