user6631314
user6631314

Reputation: 1968

IOS/Objective-C/Storyboard: Prevent ViewController From Launching Modally

I want a viewcontroller to launch using a show transition, not modally from the bottom. Normally when I use the following code that's what happens. However, in this case, it is launching as a modal controller from the bottom up. Is there a switch I don't know about or could something be set in Storyboard that is causing this VC to launch modally from the bottom instead of showing?

 UIStoryboard *storyBoard = self.storyboard;

    IDImportEventsOnboard *importEvents =
    [storyBoard instantiateViewControllerWithIdentifier:@"importEventsOnboard"];
    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController: importEvents];

    [self presentViewController:nav animated:YES completion: nil];

The VC is embedded in a navigation controller.

Should I be using showViewController directly to the targetVC without going through the Nav? Or a pushViewController What is a proper, robust way to show a VC with a show transition?

Thanks in advance for any suggestions.

Upvotes: 0

Views: 54

Answers (1)

Jason Silver
Jason Silver

Reputation: 756

In the above code you are 'presenting' a new NavigationController from a ViewController. In order to do a push/show transition, that needs to be done on an instance of a NavigationController. If your current ViewController is already in a NavigationController, you can push the new ViewController onto the current NavigationController stack. For Example:

UIStoryboard *storyBoard = self.storyboard;

IDImportEventsOnboard *importEventsVC =
[storyBoard instantiateViewControllerWithIdentifier:@"importEventsOnboard"];

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

Upvotes: 1

Related Questions