2012-09-16 13 views
9

Me gustaría iniciar una aplicación Cocoa con un ViewController igual que la plantilla iOS "Aplicación única vista", pero no existe esa plantilla (¿hay una fuente pública/de código abierto que pueda ser usado?)¿Cuál es una forma estándar de agregar ViewController en una aplicación Mac OS X Cocoa? (¿o es necesario?)

¿Es cierto que para las aplicaciones de Cocoa, realmente no necesitamos una, porque una NSView ya puede hacer todo? Podemos simplemente poner todo el manejo de eventos en nuestra clase NSView personalizada. ¿Podría ser que iOS requiere mucho más porque la rotación es manejada por ViewController y generalmente se requiere rotación? Pero si usamos MVC, entonces podría ser mejor usar siempre un ViewController, y si es así, ¿existe una forma estándar, una plantilla, para hacerlo?

Respuesta

3

En OS X NSViewController no se utiliza con tanta frecuencia como UIViewController en iOS. Una de las razones es que no es realmente útil y carece de muchas de las bonitas funciones de UIViewController. Solo hay un par de situaciones en las que realmente debe usarlas, como cuando usa un NSPopover.

Existen varias formas de estructurar su código OS X. Uno de ellos está usando NSWindowController. Puede pensar en NSWindowController como el equivalente de UIViewController en iOS.

+1

En OSX, no puede cambiar entre NSViewControllers como puede en iOS ¿verdad? Entonces no hay deslizamiento hacia la derecha, etc. Entonces, ¿tengo razón al decir que es bastante útil solo para vistas emergentes? –

+1

Sigue siendo útil para estructurar su aplicación, separando partes independientes de la aplicación e implementándolas en un controlador de vista. Por ejemplo, para implementar algo así como la aplicación de correo, podría tener un controlador de vista que muestre la lista de correos y un segundo controlador de vista independiente que muestre un correo electrónico seleccionado. – DrummerB

5

El "Controlador" en OS X con respecto a la gestión de NSViews es NSWindowController. Aunque Drummer dice que NSViewController no es muy útil, no estoy de acuerdo, es útil para dividir su NSWindowController una vez que se vuelve demasiado grande y tiene divisiones lógicas claras en términos de vistas.

Usted podría tener uno NSWindowController, y una vez que se complica bastante, el NSWindowController podría delegar las tareas que corresponden a puntos de vista específicos para las subclases de NSViewController, y en ese sentido es muy útil.

En las plantillas predeterminadas (si mal no recuerdo) el AppDelegate toma el rol del controlador de ventana, aunque técnicamente no es uno. En aplicaciones más complejas, es una buena idea crear una instancia de un controlador de ventana.

Siempre que no mezcle el controlador y vea cualquier cosa, puede usarlo. La Vista debe ser relegada a solo visualización y manejo básico de entrada.

+0

Tengo que estar en desacuerdo contigo. ¿Aparte de una ventana emergente, cuando realmente necesita un NSViewController? Porque para todo lo demás en su NSWindow, simplemente podría usar una vista personalizada y darle a esa vista personalizada su propia clase. No es necesario tener NSViewControllers separados para dividir y administrar los contenidos en NSWindow. –

Cuestiones relacionadas