3
我使用Cocoa绑定(如Mac上的Objective-C)来使用值转换器显示相对日期值。也就是说,我的NSValueTransformer
子类的实例NSDate
转换为NSString
显示相对日期像“3.秒前”,“1分钟前”等如何强制更新可可绑定?
正如你所看到的,这些显示的值过旧随着时间的推移,因此将需要以某种方式刷新。我知道我需要使用计时器,然后强制更新绑定,以便值转换器得到重新执行并显示正确的相对日期。
但问题是,我如何让这些绑定刷新它们的值?
这些值不需要更新 - 值转换器需要重新执行。 – adib 2013-03-18 15:48:36
好吧,你没有改变价值,你只是希望价值转换器自己更新。该模型不受支持。您将需要在其他地方进行值转换,并在GUI中放置一个字符串(然后您可以从计时器更新,如上所述)。问题是值本身没有改变,因此没有改变通知,并且'NSValueTransformer'不会被重新评估。没有改变到中间值然后改变它,你将无法重新启动变压器。 – gaige 2013-03-18 16:00:58
@ gaige是对的。解决此问题的一种方法是为派生/转换的值添加访问器,并在访问器中执行模型日期/从模型日期的转换。然后使用'+ keyPathsForValuesAffectingValueForKey:'(或等效的特定于属性的命名方法)设置变更通知。请参阅文档[here](http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/KeyValueObserving/Articles/KVODependentKeys.html) – 2013-03-18 16:12:09