Ios 将观察者设置为对象更改
我正在寻找一种方法,在这种方法中,我可以创建一个只在对象上应用任何更改时调用的方法 <>强>例如< /强>让我们拿一个标签。我在不同情况下更改此标签的文本。现在我需要创建一个方法:Ios 将观察者设置为对象更改,ios,objective-c,swift,Ios,Objective C,Swift,我正在寻找一种方法,在这种方法中,我可以创建一个只在对象上应用任何更改时调用的方法 强>例如< /强>让我们拿一个标签。我在不同情况下更改此标签的文本。现在我需要创建一个方法: - (void)labelTextChangeNotification { } 每当我的标签文本更改时,它都会调用 我可以使用NSNotification获取此信息。对于NSNotification我们需要发布通知。 我的要求就像观察我标签文本变化的观察者。 有什么方法可以做到这一点吗?您可以尝试使用键值观察(KVO
- (void)labelTextChangeNotification {
}
每当我的标签文本更改时,它都会调用
我可以使用NSNotification获取此信息。对于NSNotification
我们需要发布通知。
我的要求就像观察我标签文本变化的观察者。
有什么方法可以做到这一点吗?您可以尝试使用键值观察(KVO): 更改label的值时,将调用此observervalue方法。
此外,在变更字典中,您可以找到所有详细信息 要接收属性的键值观察通知,需要三件事:
addObserver:forKeyPath:options:context:
observeValueForKeyPath:of对象:更改:上下文:
addObserver:forKeyPath:options:context:
message,传递观察者
对象和要观察的属性的键路径。选择
参数指定提供给观察者的信息
发送更改通知时。使用选项
NSKeyValueObservingOptionOld
指定原始对象值
作为变更字典中的条目提供给观察者。
指定NSKeyValueObservingOptionNew
选项将提供新的
值作为更改字典中的条目。要接收这两个值,
您可以按位或选择常量
参考苹果文件
因此,当UILabel
的文本更改时,您可以使用KVO:-
[labelName addObserver:self forKeyPath:@"text" options:NSKeyValueObservingOptionNew context:NULL];
此方法将在标签文本更改时通知:-
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
NSLog(@"the text has been changed");
}
你能详细说明你的答案吗。
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
NSLog(@"the text has been changed");
}