从OSX上的版本浏览器恢复狮子不工作......想法?

Dex*_*erW 0 cocoa autosave nstextview osx-lion

我正在尝试从Lion上的先前版本恢复基于文档的应用程序.当我选择"恢复版本"时,文本视图不会反映更改.但是,如果我关闭应用程序并重新打开,则会发生更改.

我正在使用NSDocument的文件包装器变体,那么如何使文本视图的文本存储反映出立即选择的版本?我错过了什么吗?

Zor*_*org 5

我最近遇到了类似的问题(我的界面似乎没有更新).你在windowControllerDidLoadNib:或awakeFromNib中更新你的界面?当文档被还原(恢复到上次保存,或在版本浏览器中选择版本)时,不再调用windowControllerDidLoadNib:因为文档已经加载,但是文件包装方法将是.

我不确定这是否是最好的解决方案,但我所做的只是在文件被还原时才更新读取包装器方法中的UI.我这样做是通过检查插座(如你的textview)是否为零.

更新:

更好的解决方案是覆盖-revertToContentsOfURL:ofType:error:

- (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;
}
Run Code Online (Sandbox Code Playgroud)