Qualsiasi idea di quali sono le migliori pratiche per l'archiviazione di un NSViewController
all'interno di una finestra per resume scopi (conservazione interfaccia utente)? Ho provato l'archiviazione nel encodeRestorableStateWithCoder:
metodi del controller finestra solo per scoprire che il controller della vista non ottiene non archiviata quando restoreStateWithCoder:
si chiama.Codifica NSViewController per l'interfaccia utente funzione di ripristino del Leone
// 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;
}
}
Si noti che questo controller di vista contiene altri controller di vista che gestisce i propri subviews, e quindi avrà bisogno di un po 'di scoping nell'istanza NSCoder
- semplicemente passando le previste coder
verso il basso oggetto causerà nome scontri in archivio.
Grazie in anticipo!
Potrebbe essere utilizzando utilizzando la codifica sicuro, hai provato '-decodeObjectOfClass: Forkey:' invece? – Pol