2010-09-17 5 views
2

Le code suivant devrait fonctionner, non?Comment passer à une autre vue

ViewController2 *childView = [[ViewController2 alloc] initWithNibName:@"ViewController2" bundle:nil]; 
[self.navigationController pushViewController:childView animated:YES]; 
[childView release]; 

Il ne fait rien cependant. Il n'y a pas de messages d'erreur. La vue n'est pas commutée. viewDidLoad ne s'exécute même pas dans ViewController2.

+0

Avez-vous débogué du tout? ChildView est-il nul? –

+0

childView n'est pas nul. –

Répondre

1

Ce code ne fera rien si le contrôleur de vue qui le présente ne possède pas de contrôleur de navigation, c'est-à-dire qu'il ne se trouve pas dans une pile de contrôleur de navigation. Dans ce cas, vous appelez une méthode (pushViewController:animated:) sur un objet nul (self.navigationController) qui ne fait rien. Ainsi, vous ne pouvez utiliser cette méthode que si le contrôleur de vue "parent" se trouve dans une pile UINavigationController.

+0

J'ai essayé ce code et il s'est écrasé en disant sélecteur non reconnu. –

+0

Il dit sélecteur non reconnu parce que cette classe ne connaît pas cette méthode, ce qui signifie que 'self' n'est pas un' UIViewController' ou une sous-classe. D'où appelez-vous le code? Veuillez poster plus de code afin qu'il y ait plus de contexte. (Mon instinct me dit que vous le faites à partir d'une classe ** vue **.) –

+0

J'utilise un UIViewController mais c'est dans une application basée sur la vue, pas une application basée sur la navigation. –

0

Utilisez ceci:

[self presentModalViewController:viewControllerNameHere animated:YES];