5

Tengo un problema relacionado con Navigationcontroller en AppDelegate. Estoy usando un guión gráfico, que se ve así:Cómo usar Custom Navigationcontroller en AppDelegate usando Storyboard

Storyboard

Como resultado del uso de notificaciones Push, tengo la siguiente función en mi AppDelegate del archivo:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { 
//... 
} 

Cuando el llega la notificación Quiero inicializar la "Vista de detalle" - Controlador que necesita una ID como parámetro. Esta identificación es parte de mi carga, por lo que está presente en didReceiveRemoteNotification.

me gustaría a la siguientes aparatos:

DetailView *detail = [storyboard instantiateViewControllerWithIdentifier:@"detail"]; 

detail.conversationID = theID; 

[self.navigationController pushViewController:detail animated:YES]; 

Mi pregunta en este punto es: ¿cómo puedo obtener el controlador de navegación? Busqué una función como "getNavigationControllerByIdentifier" o algo así, pero no encontré nada. No puedo instanciar el Controlador de vista detallada directamente porque la barra de navegación falta allí.

espero que entienda lo que quiero decir - si usted piensa que mi enfoque es completamente equivocada por favor, corríjanme; o)

Sólo otra información de pequeña: No es importante para mí que el botón de retroceso en la vista en detalle Controlador va volver a la vista de tabla: es suficiente cuando se vincula al controlador con el botón "Cargar vista de tabla".

¡Gracias por la ayuda!

Respuesta

8

UINavigationController es una subclase UIViewController y también se le puede asignar un identificador en el guión gráfico.

Utilice -instantiateViewControllerWithIdentifier: para crear el UINavigationController y su controlador de vista raíz. Es posible que necesite crear una instancia de todos los controladores intermedios en el código y modificar la propiedad viewControllers del controlador de navegación para configurar la pila de navegación adecuada. De esta forma, cuando la aplicación se abre en la vista de detalles, pueden encontrar su camino de regreso como si hubieran sido empujados manualmente a través de la interfaz.

+0

Gracias. Ahora está claro y funciona :-) (Bounty solo está disponible en 10 horas, así que no te preocupes; o)) –

4

Puede usar rootViewController en su objeto de ventana.

UIViewController *rootViewController = self.window.rootViewController; 
// You now have in rootViewController the view with your "Hello world" label and go button. 

// Get the navigation controller of this view controller with: 
UINavigationController *navigationController = rootViewController.navigationController; 

// You can now use it to push your next view controller: 
DetailViewController *detail = [navigationController.storyboard instantiateViewControllerWithIdentifier:@"detail"]; 
detail.conversationID = theID; 
[navigationController pushViewController:detailViewController animated:YES]; 
Cuestiones relacionadas