2012-02-01 66 views
2

只是有一个关于UILabel类的问题。我知道UITextField控件在编辑发生变化时有一个委托,但我想知道UILabel是否有类似的字段。我问的原因是,我的应用程序在网络中查询某些信息何时发生变化并进行相应更新,并且我不想在我的更新中硬编码我想观看的标签名称,只是为了执行一项小任务关于它。如果它有一个委托或类似的东西,以便我的班级可以监控这个信息,那将是非常好的。iOS如何找出UILabel是否改变了它的文本

如果没有,那么任何意见将不胜感激。

回答

19

您可以使用志愿找出或执行一些代码当文本的变化是这样的:

[somelabel addObserver:self forKeyPath:@"text" options:NSKeyValueObservingOptionNew context:NULL]; 

,然后听这样

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { 

    NSLog(@"the text changed"); 
} 
变化
+0

这对我很好,谢谢你。现在我可以在没有硬编码检查的情况下将所有内容在后台处理。 – Seb 2012-02-01 23:58:58

1

A UILabel不能在没有您的代码的情况下更改其文本,那么为什么会有一个委托在更改时告诉您?您已经知道... UITextField有一个,因为用户可以编辑文本,以便在更改时告诉您。

所以基本上,不,没有委托方法,你甚至不应该需要一个。

+0

我基本存储控制清单在字典中,并根据数据包的发送情况,我使用该字典来检查字典以取出我的控件以更新它。唯一的另一种方式是当我拔出控件时,我检查控件的名称是否匹配。我不想做的事情。 – Seb 2012-02-01 16:44:21

+2

但我的意思是,你正在更新标签的文本吗?所以你知道它何时发生变化。尽管@Artanis已经向您展示了KVO观察变化​​的方式。 – mattjgalloway 2012-02-01 17:03:10

相关问题