ios objective-c uinavigationcontroller xcode4.6

ios - [self.navigationController pushViewController: ngView animado: SÍ]; no funciona



objective-c uinavigationcontroller (7)

Si uso

NGViewController *ngView = [[NGViewController alloc]initWithNibName:Nil bundle:Nil]; [self presentViewController:ngView animated:NO completion:nil];

encima del código, el controlador irá a la página NGViewController.

Pero si uso este controlador de navegación

NGViewController *ngView = [[NGViewController alloc]initWithNibName:Nil bundle:Nil]; [self.navigationController pushViewController:ngView animated:YES];

el controlador estará en la misma página.

¿Alguien puede decir que cuál es el problema?


El autocontrolador debe tener un controlador de navegación (en Storyboard) para navegar.

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


Ahora estoy usando este código

NGViewController *ngView = [[NGViewController alloc]initWithNibName:Nil bundle:Nil]; [UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration: 0.50]; [self presentViewController:ngView animated:NO completion:nil];

para que dé el mismo efecto a otro


Su self.navigationController probablemente sea nil : compruébelo mediante la depuración. Su controlador de vista self no está dentro de un UINavigationController .


necesitas declarar esto en tu primer controlador

NGViewController *ngView = [[NGViewController alloc]init]; [self.navigationController pushViewController:ngView animated:YES];


UINavigationController es un controller of controllers y está diseñado para permitirle push and pop controllers abrir push and pop controllers y administrar una jerarquía de su vista. Y su propiedad navigationController le dice si su NGViewController encuentra actualmente en UINavigationController''s jerarquía de un UINavigationController''s ; si no (como en este caso), la propiedad navigationController devuelve nil .


Debe crear su propio controlador de navegación y luego tratar de empujar los controladores de visualización y así crear una jerarquía de vistas. Normalmente sugeriría esto:

UINavigationController *navigationController = [[UINavigationController alloc]initWithRootViewController:firstviewController]; [self.window setRootViewController:navigationController]; navigationController.delegate = self; navigationController.navigationBarHidden = YES;


Deberías usar este código

NGViewController *ngView = [[NGViewController alloc]initWithNibName:Nil bundle:Nil]; [self presentViewController:ngView animated:NO completion:nil];

después de escribir esta línea cuando luego desea ir a otra página con el controlador de vista push

UINavigationController *navigationController = [[UINavigationController alloc]initWithRootViewController:ngView]; [self.navigationController pushViewController:navigationController animated:YES];

Espero que resuelvan este problema con este código Buena suerte