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