问题描述
|
我想为我的视图控制器提供一个子视图(这是它自己的类),以找出此类中的属性何时发生变化的方法。我该怎么做呢?
解决方法
KVO-关键值观察。请参阅此处的文档
当您拥有一些可以在不同地方修改的中央数据时,KVO确实很整洁,并且在值更新时可能需要刷新的视图有所不同。它可能非常适合您的要求。该文档很全面,并且有很多示例。
例:
如果我们想知道TheClass.propertyName何时更改,我们可以添加一个观察者,例如:
[theClass addObserver:self forKeyPath:@\"propertyName\" options:0 context:nil];
然后,您需要实现以下方法,该方法将在发生更改时接收通知。
-(void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if ([keyPath isEqualToString: @\"propertyName\"]) {
// Do stuff that you want to do when theClass.propertyName has changed
}
}
尽管一定要阅读文档,但说明会更好。
,如果你有
@property ... id *yourProperty;
在.m文件中,您可以实施
- (void)setYourProperty:(id)yourProperty;
例:
----
@property (nonatomic,assign) BOOL highligted;
----
- (void)setHighlighted:(BOOL)highlighted {
// execute some code
}