macos cocoa storyboard nswindowcontroller nsviewcontroller

macos - Configuración de NSWindowController/NSViewController "Presentación" en Storyboard



cocoa (1)

El estilo de presentación afecta a "Mostrar" segues. Posiblemente también afecte a otros segmentos, pero solo probé un Show segue. Probé en OS X 10.10.5 (Yosemite) con Xcode 7.1.1.

Si el estilo de presentación de un controlador de ventana es "Múltiple" (el valor predeterminado), una transición de Mostrar al controlador de ventana siempre carga una nueva instancia del controlador de ventana del guión gráfico. Esto significa que puede terminar con varias instancias del controlador de ventana a la vez, cada una con su propia ventana en la pantalla. Por defecto, esas ventanas se apilarán una encima de la otra, por lo que no será obvio lo que sucedió hasta que te muevas o cierres una.

Si el estilo de presentación de un controlador de ventana es "Único", y una instancia del controlador de ventana ya se ha cargado desde el guión gráfico, y ese controlador de ventana todavía existe (presumiblemente porque su ventana todavía está en pantalla), entonces se mostrará una transición a esa vista el controlador no creará una nueva instancia. En cambio, el Show Segue traerá la ventana del controlador de ventana existente al frente.

Este comportamiento es útil si desea un comportamiento como, por ejemplo, la ventana Dispositivos de Xcode, donde solo puede haber una de esas ventanas. Usted crea un elemento del menú "Dispositivos" en el menú Ventana en su guión gráfico, y lo conecta al controlador de la ventana Dispositivos en el guión gráfico con un Mostrar transición. Establezca el estilo de presentación del controlador de la ventana Dispositivos en Único. Ahora el elemento del menú nunca creará un segundo controlador de ventana de dispositivos si ya existe uno.

Es probable que desee establecer de algún modo la propiedad excludedFromWindowsMenu de excludedFromWindowsMenu la ventana en verdadero, por lo que no aparece dos veces en el menú Ventana (porque de manera predeterminada se agrega a ese menú). Podría, por ejemplo, usar una subclase de NSWindowController que lo establece:

class DevicesWindowController: NSWindowController { override func windowDidLoad() { super.windowDidLoad() window?.excludedFromWindowsMenu = true } }

Los controladores de vista también tienen un estilo de presentación, porque también se puede conectar Mostrar los segmentos para ver los controladores. Un segmento de Mostrar conectado a un controlador de vista crea automáticamente un controlador de ventana para contener el controlador de vista en tiempo de ejecución. El estilo de presentación del controlador de la ventana se establece efectivamente en el controlador de la vista, por lo que obtendrá el mismo comportamiento singleton si establece la presentación del controlador de vista en Single.

Por lo que puedo decir, la configuración del guión gráfico no tiene ninguna propiedad pública correspondiente o método que pueda usar en el código.

Si conecta Show segue a una referencia del guión gráfico (nuevo en Xcode 7), la segue ignora el estilo de presentación del controlador de la ventana de destino y actúa como si fuera "Múltiple". Esto sucede incluso si el destino está realmente en el mismo guión gráfico que la referencia.

¿Qué hace exactamente la opción Presentación (en Attribute Inspector) en StoryBoard for Cocoa?

Da dos opciones para seleccionar de

  • Soltero
  • Múltiple

PD Cuando googleó el título, los resultados están relacionados con la presentación de PowerPoint