iOS – Push viewController à partir du code et du storyboard

J'ai ce code

PlaceViewController *newView = [self.storyboard instantiateViewControllerWithIdentifier:@"PlaceView"]; [self presentViewController:newView animated:YES completion:nil]; 

Et je peux changer de vue, mais je pousserais cette vue car quand je reviens à cette page, l'état persiste.

J'essaye de mettre ce code:

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

mais ne fait rien.

Merci

 PlaceViewController *newView = [self.storyboard instantiateViewControllerWithIdentifier:@"storyBoardIdentifier"]; [self.navigationController pushViewController:newView animated:YES]; 

Vérifiez 2 choses,

  1. votre identifiant de storyboard est correct.

  2. La vue racine possède un controller de navigation.

Pour Storyboards, vous devriez utiliser performSegueWithIdentifier comme ceci:

  [self performSegueWithIdentifier:@"identifier goes here" sender:self]; 

Swift 3.x

 let viewController = storyboard?.instantiateViewController(withIdentifier: "storyboardIdentifier") as! UIViewController navigationController?.pushViewController(viewController, animated: true) 

Par défaut, Xcode crée un controller de vue standard. nous changeons d'abord le controller de vue en controller de navigation. Sélectionnez simplement "Editor" dans le menu et select "Embed in", suivi de "Navigation Controller". Étape 1. Sélectionnez Main story board Étape 2.Cliquez sur "Editor" en haut de votre application Xcode. Étape 3. Cliquez sur "Embed In"

Xcode intègre automatiquement le View Controller avec le controller de navigation.

Utilisation:

 UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"STORYBOARD_NAME" bundle:nil]; PlaceViewController *newView = [storyboard instantiateViewControllerWithIdentifier:@"PlaceView"]; [self presentViewController:newView animated:YES completion:nil]; 

Ou:

 UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"STORYBOARD_NAME" bundle:nil]; PlaceViewController *newView = [storyboard instantiateViewControllerWithIdentifier:@"PlaceView"]; [self.navigationController pushViewController:newView animated:YES];