Embed a UIViewController in a UINavigationController Programmatically

We know how to embed a ViewController in a NavigationController in Storyboard. However, I came across a scenario where I had to initiate it programmatically. The code:

let viewController = MyViewController()
let nav = UINavigationController(rootViewController: viewController)
self.navigationController?.present(nav, animated: true, completion: nil)

2 thoughts on “Embed a UIViewController in a UINavigationController Programmatically

  1. Hello, where do you put this code? I tried in the viewDidLoad() but i get a error saying the view is not in the hierarchy ?

    Like

  2. It depends on which view it is referring to. It should work in the viewDidLoad().

    You can check two of the following:

    1. That MyViewController is a valid controller in your code. It is just used as an example here.
    2. Check that the presenting controller actually exists – that self.navigationController is not null.

    Hope that helps✌️

    Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s