Search code examples
iosswiftuinavigationcontroller

How to navigate back through one navigationController and another navigationController?


Here I have:

SplitViewController >> 1. NavigationController >> MainViewController >> NavigationController>> DetailViewControllerA

another link from SplitViewController above

NavigationController >> mainDetailViewController >> NavigationController >> DetailViewControllerA

I'd like to create a back button manually on DetailViewControllerA when navigating from mainDetailViewController. But how to go back from DetailViewControllerA to mainDetailViewController?

When I used

_ = navigationController?.popViewController(animated: true)

It's only nil

Thanks.


Solution

  • The problem lies here:

    NavigationController >> MainViewController >> NavigationController>> DetailViewControllerA 
    

    There is no need of assigning DetailViewControllerA a new NavigationController

    This is how it should be:

    NavigationController >> MainViewController >> DetailViewControllerA 
    

    When you want to push to DetailViewControllerA screen, you just need to push your DetailViewControllerA like this.

    let vc = UIStoryboard.init(name: "Main", bundle: Bundle.main).instantiateViewController(withIdentifier: "DetailViewControllerA") as! DetailViewControllerA
    self.navigationController?.pushViewController(vc, animated: true)
    

    Then in DetailViewControllerA, you can easily call popViewController on back button press(if using manual button, otherwise back button will show by default with pop functionality)