我正在尝试从 Lion 上的先前版本恢复基于文档的应用程序。当我选择“恢复版本”时,文本视图不会反映更改。但是,如果我关闭应用程序并重新打开,更改就在那里。
我正在使用 NSDocument 的文件包装器变体,那么如何使文本视图的文本存储反映立即选择的版本?我错过了什么吗?
我正在尝试从 Lion 上的先前版本恢复基于文档的应用程序。当我选择“恢复版本”时,文本视图不会反映更改。但是,如果我关闭应用程序并重新打开,更改就在那里。
我正在使用 NSDocument 的文件包装器变体,那么如何使文本视图的文本存储反映立即选择的版本?我错过了什么吗?
我最近遇到了类似的问题(我的界面似乎没有更新)。你是在 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;
}