Unwind Segue in Xcode 6.1.1 with storyboard

前端 未结 4 2085
广开言路
广开言路 2021-02-20 13:26

I have been reading that unwind segue\'s are bugged in Xcode 6. I am using Xcode 6.1.1 and I use swift.

I use the \"Back\" button that is put by the navigation controlle

相关标签:
4条回答
  • 2021-02-20 13:54

    Got it working. If you are presenting from a NavigationController or TabBarController(unsure about the TabBarController), you need to subclass the navigation controller and add the unwind segue to that. In storyboard don't forget to change the class of your navigation controller. My view hierarchy was NavController -> TableController -> DetailController. After adding method to custom NavBar class add it to the VC you want to RETURN to. You will then be able to ctrl-drag to exit. I consider this a bug, as once it is hooked up I was able to delete the subclass and return to stock NavigationController and it still worked.

    0 讨论(0)
  • 2021-02-20 14:01

    Got it working on Xcode 6.2. My case is ViewController A presenting B modally. Unwind setup steps below:

    1. In A, write an IBAction

      -(IBAction)unwindFromB:(UIStoryboardSegue *) unwindSegue 
      {
        ViewControllerB *vc = [unwindSegue sourceViewController];
        // get whatever data you want to pass back from B
      }
      
    2. In storyboard, find B and right-click the 'Exit' button at the top, then the 'Presenting Segue' menu will list unwindFromB you've just created in A

    3. Click the little '+' sign to the right and link it back to B, select 'manual'

    4. Don't forget to set identifier of the unwind segue if you need to call it programmatically.

    0 讨论(0)
  • 2021-02-20 14:08

    I want to provide a detailed answer:

    To perform an unwind segue, go to the view controller that you want to segue to and add the following function; (the name can change of course)

    @IBAction func unwindToMainMenu(segue: UIStoryboardSegue) {
    
    }
    

    Once you add this function, you will be able to see this unwind function from any view controller on your storyboard. Just right click on the exit icon on the top of any view controller.exit icon right click

    If you want to perform unwind with a button, then you can cntrl + drag from the button to exit icon and choose your unwindSegue function. Done!

    Unwind with Button

    If you want to perform unwind programmatically, then cntrl + drag from the viewController icon to the exit icon and choose the unwind function.

    enter image description here

    Afterwards, open the Document Outline and click on the unwind segue.

    enter image description here

    Go to Attributes Inspector inside Utilities and give an identifier to your unwind segue.

    enter image description here

    Lastly, call the performSegueWithIdentifier function like the following;

    self.performSegueWithIdentifier("goToMainMenu", sender: self)
    

    Hope that helps!

    0 讨论(0)
  • 2021-02-20 14:12

    I found that I could not drag from the UITableViewCell to the Exit object on the View Controller on the Storyboard.

    Solution was to first add an appropriate IBAction in code. Once an IBAction exists, the drag target will light up.

    -(IBAction)prepareForUnwind:(UIStoryboardSegue *)segue {
    
    }
    
    0 讨论(0)
提交回复
热议问题