resume (사용자 인터페이스 보존)을 위해 창안에 NSViewController
을 보관하는 것이 가장 좋은 방법은 무엇입니까? 나는 창 컨트롤러의 encodeRestorableStateWithCoder:
메서드에서만 보관을 시도하여 restoreStateWithCoder:
이 호출 될 때보기 컨트롤러가 아카이브되지 않는다는 것을 알아 냈습니다. 단순히 아카이브에서 이름 충돌의 원인이됩니다 제공된 coder
객체 아래를 통과 -이 뷰 컨트롤러가 NSCoder
인스턴스의 일부 범위 지정이 필요합니다, 따라서 자신의 파단을 관리하고, 다른 뷰 컨트롤러를 포함Lion의 사용자 인터페이스 재개 기능을위한 NSViewController 인코딩
// 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;
}
}
참고.
미리 감사드립니다.
보안 코딩을 사용 중일 수 있습니다. 대신'-decodeObjectOfClass : forKey :'를 시도 했습니까? – Pol