Pregunta

Tengo el siguiente método para abrir documentos.

- (BOOL)readFromData:(NSData *)data ofType:(NSString *)typeName error:(NSError **)outError
{
NSString *stringData = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

[editorView setString:stringData];

if ( outError != NULL ) {
    *outError = [NSError errorWithDomain:NSOSStatusErrorDomain code:unimpErr userInfo:NULL];
}

return YES;
}

Parece sin embargo que el documento y sus puntos de vista no se cargan hasta que se devuelve YES así que no puedo configurar el contenido de la vista de texto, ya que su aún no cargado. Hace Cualquiera sabe de un trabajo alrededor para esto?

Gracias de antemano

¿Fue útil?

Solución

Cocoa sigue el patrón de diseño modelo-vista-controlador (MVC). Usted debe leer para arriba en él en la documentación conceptual .

No se puede almacenar la información del modelo en la vista. Es decir, el objeto de documento debe mantener el contenido del archivo cargado (en una variable de instancia). Más tarde, cuando si -windowControllerDidLoadNib se llama (significando una copia de la interfaz de usuario documento se ha cargado el documento), puede actualizar su punto de vista con el contenido del archivo.

El enfoque de NSDocument es útil porque hay una serie de circunstancias en las que se necesita para crear una instancia del documento, pero no su interfaz de usuario (piensa scripting, importación, Spotlight importador de consulta, impresión instantánea, ...).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top