Xose
Xose

Reputation: 544

iOS - Push viewController from code and storyboard

I have this code

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

And I can change view, but I would push this view for when I return at this page, the state persists.

I try to put this code:

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

but doesn't do anything.

Thanks

Upvotes: 15

Views: 44625

Answers (5)

Vineesh TP
Vineesh TP

Reputation: 7963

Objective-C:

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

Please do notice below points,

  1. your storyboard identifier is correct.

  2. The root view have navigation Controller.

Swift:

let newView = self.storyboard?.instantiateViewController(withIdentifier: "storyBoardIdentifier") as! PlaceViewController
self.navigationController?.pushViewController(newView, animated: true)

Upvotes: 41

Alino
Alino

Reputation: 152

Use:

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

Or:

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

Upvotes: 6

footyapps27
footyapps27

Reputation: 4042

Swift 3.x

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

Upvotes: 2

Shashikant Kashodhan
Shashikant Kashodhan

Reputation: 113

By default, Xcode creates a standard view controller. we first change the view controller to navigation controller. Select the Simply select “Editor” in the menu and select “Embed in”, followed by “Navigation Controller” Step 1. Select Main story board Step 2.Click on "Editor" on top of your Xcode application. Step 3. Click on "Embed In"

Xcode automatically embeds the View Controller with Navigation Controller.

Upvotes: -2

Sumanth
Sumanth

Reputation: 4921

For Storyboards, you should use performSegueWithIdentifier like so:

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

Upvotes: 6

Related Questions