简体   繁体   中英

How to navigate from popoverpresentation view controller to another view controller

I have a screen with a navigation controller and it has a button on the nav bar which displays a table (from another view controller) to select things from using pop over presentation, now on clicking any of those items i want to open another view controller a different screen.

BUT if i use navigationController?.pushViewController(tab, animated: true) the new view controller is displayed within that small pop view itself

and if i use navigationController?.presentViewController(tab, animated: true) the navigation bar isn't there on that screen and i cannot go back to the previous screen. How to do it in such a way that i can go back to the screen which first displayed the pop Up list.

If you are using a Storyboard, it's really easy to do. If you're not, then you should . It's very good to use a Storyboard.

Let's call your view controllers these names:

  • The view controller that can show the popover is called SourceVC
  • The popover controller is called PopoverVC
  • The view controller to show when the user selects something from the table view is called NewVC

Add a show segue connecting your SourceVC to your NewVC . Give the segue an identifier.

Add an unwind segue that unwinds from PopoverVC to SourceVC . First, add these methods in your SourceVC :

func unwind(segue: UIStoryboardSegue) {
    if let vc = segue.sourceViewController as? PopoverVC {
        // get the thing that the user selected and store it somewhere
        // perform a segue that shows NewVC
    }
}

override func prepareForSegue(segue: UIStoryboardSegue) {
    if let vc = segue.destinationViewController as? NewVC {
        // pass the thing that the user selected to the NewVC
    }
}

Then, select the PopoverVC and control drag it to the "Exit" thingy in SourceVC . And select "unwind:". Give this unwind segue an identifier as well.

When the user selects a row in the table view, just perform the unwind segue and store the thing that the user selected in a class-level variable so that you can pass it to SourceVC .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM