知道出于恢复(用户界面保留)目的而归档NSViewController
窗口内部的最佳实践是什么吗?我已经尝试在窗口控制器的 方法中归档它,只是发现视图控制器在 被调用时没有被取消归档。encodeRestorableStateWithCoder:
restoreStateWithCoder:
// NSWindowController subclass
-(void)encodeRestorableStateWithCoder:(NSCoder *)coder
{
[super encodeRestorableStateWithCoder:coder];
NSViewController* contentViewController = self.contentViewController;
if (contentViewController) {
[coder encodeObject:contentViewController forKey:BSContentViewControllerResumeKey];
}
}
-(void)restoreStateWithCoder:(NSCoder *)coder
{
[super restoreStateWithCoder:coder];
NSViewController* contentViewController = [coder decodeObjectForKey:BSContentViewControllerResumeKey];
if (contentViewController) {
// somehow this never get executed since contentViewController always comes out nil
self.contentViewController = contentViewController;
}
}
请注意,此视图控制器包含管理自己的子视图的其他视图控制器,因此需要在NSCoder
实例中进行一些范围界定——简单地向下传递提供的coder
对象将导致存档中的名称冲突。
提前致谢!