objective-c - tutorial - raywenderlich
iOS 5 storyboard, determina la ruta programáticamente (3)
De forma predeterminada, el controlador de vista inicial de su guión gráfico principal se crea una instancia y se muestra automáticamente cuando se inicia la aplicación. Para evitar que esto suceda, debe eliminar la configuración UIMainStoryboardFile
de su archivo info.plist.
Sin un controlador de vista predeterminado, ahora es libre de crear uno programáticamente al iniciar la aplicación. Consulte la documentación de UIStoryboard . Use +storyboardWithName:bundle:
para cargar el storyboard y luego use –instantiateViewControllerWithIdentifier:
para crear el controlador de vista correcto. También deberá crear una ventana UI principal y agregar la vista del controlador de vista a la misma, como solía hacer con la interfaz de usuario basada en .nib. Tenga en cuenta que sin la configuración de UIMainStoryboardFile
no se UIMainStoryboardFile
una ventana principal, lea la explanation .
Estoy teniendo problemas para lograr lo siguiente utilizando un guión gráfico:
Cuando no se realiza la instalación: ejecute la aplicación -> muestre la vista del controlador de la configuración -> muestre el controlador de navegación principal Cuando la configuración haya terminado: ejecute la aplicación -> muestre el controlador de navegación principal
Básicamente, quiero que la aplicación se inicie programáticamente con la vista de configuración en ciertos casos y, de lo contrario, vaya directamente al controlador de navegación principal.
Logré mostrar la vista de configuración con un estilo modal segue del controlador de navegación principal, pero no sé cómo mostrarlo antes de que se muestre el controlador de navegación principal. ¿Algunas ideas?
Hice algo parecido a amoshaviv, su consejo es sensato. Sin embargo, lo hice ligeramente diferente, y le daré más información. Creé una clase personalizada MyInitialViewController, derivada de UIViewController, y la convertí en el controlador de vista inicial. En el archivo del guión gráfico, creé segmentos modales con nombres apropiados para todos (en mi caso tres) posibles controladores de primera vista "reales". En la clase MyInitialViewController, implementé el
- (void)viewDidAppear:(BOOL)animated;
método, para realizar primero la comprobación a qué vista cambiar, y luego hacer el correcto
[self performSegueWithIdentifier:@"NameOfSegue" sender:self];
Efectivamente, esto hace que el MyInitialViewController no sea más que un interruptor realizado cuando se pone a la vista. Primero intenté hacer esto cuando estaba cargado porque no me importa ver realmente esta vista, pero eso no funcionó, mientras que viewDidAppear sí lo hace.
Para hacer esto visualmente suave, intenté lo siguiente. En las propiedades de los segues, deshabilité la animación. La vista la dejé vacía y le asigné un color de fondo que coincide con el de la imagen de inicio.
Me las arreglé para hacerlo un poco diferente:
- Use un
UINavigationController
como el controlador de vista inicial. - Cree un controlador de vista raíz que administre la decisión de qué cargar.
- Cree un Segmento de guión gráfico desde el controlador de vista raíz a la vista principal y a la vista de configuración, y proporcione los identificadores adecuados de los segues.
- Llame al
performSegueWithIdentifier
con el identificador adecuado de su controlador de vista de raíz.
Solo otra solución, espero que esto ayude.