2011-09-29 30 views
6

我正在第一次把腳放入可可。Lion在不退出應用程序時關閉文檔時恢復原狀

這是一個簡單的問題。當應用程序終止並重新啓動時,OS X Lion支持恢復窗口狀態。好的,很好,很好。

但對於基於文檔的應用程序,可以在相同的簡歷功能還可以管理窗口狀態的儲蓄當文檔被關閉並重新打開後但沒有應用任何戒菸? (換句話說,無論應用程序是否退出,它是否可以持續管理每個文件的狀態?或者,我是否必須通過將信息保存到文檔的文件中來自行管理它?)

例如,iWork' 09應用程序做這樣的事情:如果您關閉保存的文檔並重新打開它,它將恢復窗口大小,位置和滾動器位置。我不要知道它是否使用獅子的簡歷本身。

但是,相比之下,OS X Lion的TextEdit會在退出並重新啓動時恢復窗口,但在關閉文檔並重新打開時它不記得窗口狀態。這使我懷疑使用Resume而不退出可能不會自動執行(因爲Pages可以將窗口狀態保持爲專有文件格式,但TextEdit不會自動使用純文本,RTF,HTML等文件)。


我沒有進入WWDC 2011的視頻着呢,無論是OS X發佈說明,OS X的應用程序編程指南,也不是NSWindowRestoration API文檔談論這個特別。

所以這個問題再次:關閉並重新打開後自動記住文檔窗口的狀態而不退出應用程序(像iWork一樣)... Lion's Restore是否支持此功能?

非常感謝!

+0

Lion爲您提供了自動保存狀態的工具(檢查應用程序:willEncodeRestorableState:和NSDocument的encodeRestorableStateWithCoder :),但是您可以選擇您希望保留的狀態和狀態。 –

回答

2

但是對於基於文檔的應用程序,同樣的簡歷功能還可以管理窗口狀態的保存,當文檔關閉並稍後重新打開,但沒有任何退出應用程序? (換句話說,可以把它堅持不管應用程序是否退出或無法管理的每個文件的狀態?

不是無助的,沒有。

還是我必須去管理它自己被保存信息在文件的文件中?)

或其他地方,是的。

我未經測試的建議是嘗試使用窗口恢復協議。在關閉時,發送自己encodeRestorableStateWithCoder:,然後將該數據存儲在文檔中(或任何您想要的地方)。打開文檔時,如果它具有可恢復的狀態信息,則將其傳遞到restoreStateWithCoder:

相關問題