履歴書(ユーザーインターフェイスの保存)の目的で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
で、アーカイブで名前が衝突します。
前もって感謝します!