5

No puedo entender cómo diseñar una aplicación de manera óptima para que funcione una sola ventana en Mac OS X. Preferiría un solo documento: aplicación de ventana única (no estoy codificando una aplicación de utilidad), pero no está claro dónde debo inicializar el contenido de una ventana.Mac OS X arquitectura de aplicación de ventana única Cocoa

En iOS Debo utilizar el método -[UIViewController viewDidLoad] o -[UIViewController viewWillAppear:] de un controlador de vista raíz para ese fin.

¿Podría aconsejarme algún tutorial o explicar cómo tratar con NSDocument - NSDocumentController - NSWindowController - NSViewController classes?

Gracias por su respuesta. :-)

Respuesta

3

Puede poner su lógica de ventana en su AppDelegate, pero lo desaconsejo. Recomiendo hacer su propia subclase NSWindowController para controlar la ventana, incluso para una aplicación de una sola ventana. Es una separación muy agradable.

No veo por qué uno querría usar NSDocumentController para una aplicación de una sola ventana. NSViewController está destinado a controlar sus vistas personalizadas. Por lo general, no se usa en la aplicación Mac sencilla promedio, a menos que tenga algunas vistas personalizadas que desee controlar especialmente.

Por lo tanto, en su AppDelegate, por ejemplo, applicationDidFinishLaunching:, debe asignar e inicializar el controlador de ventana y mostrar la ventana.

Hay un buen capítulo en "Programación de cacao para Mac OS X" de Hillegass sobre cómo trabajar con controladores de ventana. Los documentos de Apple también tienen material, por supuesto.

+0

'NSDocumentController' se puede modificar fácilmente para manejar una aplicación de una sola ventana. La razón por la que desearía usarlo es que obtiene muchísimo "gratis" con la arquitectura de documentos Cocoa. –

+2

¿Pero no es eso si realmente quiere abrir y guardar documentos especialmente? No lo miré mucho en realidad. Obtienes lo suficiente "de forma gratuita" simplemente usando las plantillas de aplicación de ventana única estándar de Apple. – Enchilada