Segue Unwind back to the last specific View controller

妖精的绣舞 提交于 2019-12-23 16:30:46

问题


Is there a way to have one button unwind back to a specific view controller? For example suppose I have ViewController A and B. Both modally segue to ViewController C. Now I understand how to segue unwind back to one of the previous view controllers (As was explained here) but how do I go back to the specific view controller that presented VC C?

So to sum it up, what I'm trying to figure out is... If A segued to C then I want to unwind back to A when the button is selected. If B segued to C then I want to unwind back to B when the button is selected.


回答1:


You should use the standard way to return from a modal segue. Put this in your 'back' button...

[[self presentingViewController] dismissViewControllerAnimated:YES];

This doesn't use the storyboard or a segue for the return, just code.




回答2:


You could use the presentingViewController 'title' property to steer the unwind process to the desired originating ViewController. This solution would also allow you to pass data from your ViewController C to ViewControllers A and B.

1) Select the View Controller button (the yellow one) at the top of the storyboard canvas of ViewController A.

2) In the Attributes Inspector (View Controller section) give ViewController A a title.

3) Include the following code in ViewController A:

@IBAction func returned(segue: UIStoryboardSegue) {
   // Don't need any code here 
}

4) Repeat steps 1, 2 and 3 for ViewController B.

5) Override the prepareForSegue function in ViewController C as follows:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {   
    if self.presentingViewController!.title! == "ViewControllerATitle" {
        let destination = segue.destinationViewController as! ViewControllerA
        destination.someFunction(someArgument)
    } 
    else if self.presentingViewController!.title! == "ViewControllerBTitle" {
        let destination = segue.destinationViewController as! ViewControllerB
        destination.someFunction(someArgument)
    }
}


来源:https://stackoverflow.com/questions/16003380/segue-unwind-back-to-the-last-specific-view-controller

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!