问题
I'm passing data between two different UIViewControllers located within two different .storyboard files within Xcode. (It's quite a large project so I had to break it up into different storyboards.)
I have already established an "exercisePassed" variable (String) within the view I would like to Pass my data to, and I already know how to move between two views located within different storyboards. Like so.
var storyboard = UIStoryboard(name: "IDEInterface", bundle: nil)
var controller = storyboard.instantiateViewControllerWithIdentifier("IDENavController") as! UIViewController
//**************************************
var ex = //Stuck Here
ex.exercisedPassed = "Ex1"
//**************************************
self.presentViewController(controller, animated: true, completion: nil)
How can I pass the data without using a Segue/PrepareForSegue?
回答1:
I'm assuming that the viewController that you want to pass the data to is a custom viewController. In that case, use this amended code here:
var storyboard = UIStoryboard(name: "IDEInterface", bundle: nil)
var controller = storyboard.instantiateViewControllerWithIdentifier("IDENavController") as! MyCustomViewController
controller.exercisedPassed = "Ex1"
self.presentViewController(controller, animated: true, completion: nil)
回答2:
your question is not very clear, as far as i have understood
//1
//create a variable in "IDENavController"
//e.g
var someVariable = @""
//2
var controller = storyboard.instantiateViewControllerWithIdentifier("IDENavController") as! UIViewController
controller.someVariable = [assign your variable]
//3
self.presentViewController(controller, animated: true, completion: nil)
回答3:
Try this. This worked for me.
var storyboard = UIStoryboard(name: "IDEInterface", bundle: nil)
var controller = storyboard.instantiateViewControllerWithIdentifier("IDENavController") as! YourDestinationViewControllername
// Add your destination view controller name and Identifier
// For example consider that there is an variable xyz in your destination View Controller and you are passing "ABC" values from current viewController.
controller.xyz = "ABC"
self.presentViewController(controller, animated: true, completion: nil)
Hope this will be helpful.
回答4:
For those who are looking for the Swift 3/4 answer:
let storyboard = UIStoryboard(name: "IDEInterface", bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: "IDENavController") as! CustomViewController
controller.yourVariable = "abc"
self.present(controller, animated: true, completion: nil)
来源:https://stackoverflow.com/questions/32051629/passing-variables-between-storyboards-without-segues-swift