3
votes

I simply want to know how to segue to a new view controller in a new storyboard without having to create the new view controller programmatically.

The Scenario: I have one view controller that's created entirely in code and the system thinks I'm in Storyboard A. I want to segue from this view controller to another view controller that's contained on Storyboard B.

  1. I could create a segue attached to a storyboard reference (which is a great suggestion) if this view controller was created with Storyboard. But it's in code, so I can't do this.
  2. My other option is to make the next view controller be totally created in code so that I can present it without using segues. That's a pain, but will work.
  3. My third option is to initialize the new storyboard in code, initialize the new view controller in code using a storyboard identifier, and then use the navigation controller to segue to it.

If there are other options I'm not aware of please include them below!

3

3 Answers

7
votes

This piece of code allows you to segue to any viewController anywhere in your application while still being able to build your viewController with storyboard.

func settingsButtonPressed(sender:UIButton) {
    let storyboard = UIStoryboard(name: "AccountLinking", bundle: nil)
    let linkingVC = storyboard.instantiateViewControllerWithIdentifier("AccountLinkingTable")
    self.navigationController?.pushViewController(linkingVC, animated: true)
}

So many hours saved thanks to this little function.

1
votes

I would urge anyone reading this to take a look at the Storyboard Reference introduced in Xcode 7 to achieve this instead of loading the storyboard programatically.

0
votes

You can override the below function to override the segue call.

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

   var destinationController = segue.destinationViewController

}