从OSX lion上的浏览器版本恢复不工作…的想法



我正在尝试从Lion的前一个版本恢复基于文档的应用程序。当我选择"还原版本"时,文本视图不反映更改。但是,如果我关闭应用程序并重新打开,更改就在那里。

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

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

我不确定这是否是最佳解决方案,但我所做的是仅在文档被还原时更新read包装器方法中的UI。我通过检查一个outlet(比如你的textview)是否不是nil来做到这一点。

更新:

一个更好的解决方案是重写-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;
}

最新更新