相关疑难解决方法(0)

为Lion的用户界面恢复功能编码NSViewController

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

请注意,此视图控制器包含管理其自己的子视图的其他视图控制器,因此在NSCoder实例中需要一些范围- 只需coder向下传递提供的对象将导致存档中的名称冲突.

提前致谢!

resume cocoa appkit osx-lion nsarchiving

8
推荐指数
1
解决办法
838
查看次数

标签 统计

appkit ×1

cocoa ×1

nsarchiving ×1

osx-lion ×1

resume ×1