Estoy trabajando en mi primera aplicación Mac basada en documentos.NSDocumentController currentDocument return nil
He subclase NSDocument
, reimplementar métodos tales como
- (BOOL)readFromURL:(NSURL *)absoluteURL ofType:(NSString *)typeName error:(NSError **)outError;
- (BOOL)writeToURL:(NSURL *)absoluteURL ofType:(NSString *)typeName error:(NSError **)outError;
- (void)makeWindowControllers;
El controlador principal ventana es una subclase de NSWindowsController
, que contiene dos NSViewController subclases.
El problema al que me enfrento es que necesito tener acceso al documento actual desde estos controladores de vista. Lo que hago es llamar
MyDocument *myDocument = [[NSDocumentController sharedController] currentDocument];
Al principio, justo después de iniciar la aplicación, se crea un nuevo documento. A continuación, se crean la ventana principal y sus controladores de vista, pero el método anterior devuelve nil. Aquí está el registro (usando NSLog) me sale:
Just created this new document: <MyDocument: 0x10040ff10>
I'm in a view controller and current document is (null)
Después de eso, la creación de un nuevo documento y llamar a este método en un puntero no nulo, pero no señala en el documento correcto, pero al primero:
Just created this new document: <MyDocument: 0x100437e10>
I'm in a view controller and current document is <MyDocument: 0x10040ff10>
en cuenta que después de la segunda creación de documentos, currentDocument
apunta al primer documento y no a la segunda.
¿Alguna idea de lo que me estoy perdiendo o haciendo mal aquí? ¿Cuándo se establece currentDocument
para NSDocumentController
?
Gracias, pero ya lo intenté y sigo sin obtener ningún resultado. Tampoco estaba seguro de qué significaba "no activo" para Apple, pero en mi caso ocurre justo después de iniciar la aplicación. Sin arrastrar y soltar, nada especial. – msoler