我的應用程序使用默認系統存儲上次數據更新的日期&。OS X如何在日期更改時更新相對日期顯示?
我的窗口有一個與該值綁定的文本框。該文本框還附有日期格式化程序。全部通過Interface Builder完成。日期格式設置爲使用相對日期。
數據只在白天進行更新,每當新數據到達時文本字段完全更新。所以我得到的是這樣的:
今天09:30 今天09:35 今天09:40 ... 今天17:40
17:40將是最後的數據更新天。
問題是,一旦它變成午夜,它仍然會說今天17:40,當它應該說昨天17:40。
如果我退出並重新打開應用程序,它會顯示昨天17:40。
我想我需要告訴一些刷新,但我不知道什麼,我無法找到一個例子。
1)顯然你可以發送假的willChangeValueForKey和didChangeValueForKey通知,但很多人說這是不正確的。
2)我已經嘗試在午夜後將用戶默認值設置爲自己,但這並未觸發更改。
3)我已經嘗試將用戶默認值設置爲零然後在午夜之後回來,但是這也不起作用。
我確定有一個正確和簡單的方法來做到這一點,但我找不到它。
我需要觸發什麼? 我需要觸發哪個對象?
非常感謝。
我已經得到了NSTimer的正常工作 - 在午夜每天都會發生火災(並更新其他一些東西)。我有一個類似的方法(midnightUpdates)像你的建議。我仍然不確定的是做什麼實際刷新? – jb8748 2013-02-22 18:46:08
你有爲你的文本框設置的插座嗎?也許一個'[yourTextbox setNeedsDisplay]'可以做到這一點。 – 2013-02-22 21:10:31
我已經做了一些更多的調查,午夜之後值會自動更改,但不會自動調用NSTextField上的顯示。只有在下次發生重新顯示時纔會更新 - 例如正在激活的窗口。 所以你是對的@James Boucher - 如果你想立即反映在UI中,那麼你必須做[yourTextBox顯示]。這是NSTextField需要做的事情 - 無需發送KVO更新或更改NSDateFormatter。 – jb8748 2013-02-23 15:11:35