2011-07-30 91 views
0

我正試圖從以前的Lion版本恢復基於文檔的應用程序。當我選擇「恢復版本」時,文本視圖不反映更改。但是,如果我關閉應用程序並重新打開,那麼更改就在那裏。從版本瀏覽器恢復OSX獅子不工作......想法?

我正在使用NSDocument的文件包裝變體,因此如何使文本視圖的文本存儲反映立即選擇的版本?我錯過了什麼嗎?

回答

5

我最近有一個類似的問題(我的界面似乎沒有更新)。你正在更新windowControllerDidLoadNib中的接口:還是awakeFromNib?當文檔恢復時(恢復爲上次保存的版本或在版本瀏覽器中選擇版本),windowControllerDidLoadNib:不會再次被調用,因爲文檔已經加載,但文件包裝器方法將會。

我不確定這是否是最佳解決方案,但我所做的是隻有在文檔被恢復時才更新讀取包裝方法中的UI。我這樣做是通過檢查一個插座(如你的textview)是否不是零。

更新:

更好的解決方案是壓倒-revertToContentsOfURL:ofType:錯誤:

- (BOOL)revertToContentsOfURL:(NSURL *)absoluteURL ofType:(NSString *)typeName error:(NSError * __autoreleasing *)outError 
{ 
    BOOL reverted = [super revertToContentsOfURL:absoluteURL ofType:typeName error:outError]; 
    if (reverted) 
    { 
     // re-update interface 
    } 
    return reverted; 
} 
+0

我正在改變在readFromFileWrapper存儲文本和重新加載文本視圖。你檢查了什麼是零? – DexterW

+0

終於搞清楚我做錯了什麼。謝謝。 – DexterW

+0

用更好的答案更新。 – Zorg