Ios 在没有分段的故事板之间传递变量-Swift

Ios 在没有分段的故事板之间传递变量-Swift,ios,swift,uiviewcontroller,uistoryboardsegue,Ios,Swift,Uiviewcontroller,Uistoryboardsegue,我正在Xcode中两个不同的.storyboard文件中的两个不同UIViewController之间传递数据。(这是一个相当大的项目,所以我不得不把它分成不同的故事板。) 我已经在我想将数据传递给的视图中建立了一个“exercisePassed”变量(字符串),并且我已经知道如何在位于不同故事板中的两个视图之间移动。像这样 var storyboard = UIStoryboard(name: "IDEInterface", bundle: nil) var controller = stor

我正在Xcode中两个不同的.storyboard文件中的两个不同UIViewController之间传递数据。(这是一个相当大的项目,所以我不得不把它分成不同的故事板。)

我已经在我想将数据传递给的视图中建立了一个“exercisePassed”变量(字符串),并且我已经知道如何在位于不同故事板中的两个视图之间移动。像这样

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)

如何在不使用Segue/prepareforsgue的情况下传递数据?

我假设要传递数据的viewController是自定义viewController。在这种情况下,请在此处使用此修订代码:

var storyboard = UIStoryboard(name: "IDEInterface", bundle: nil)
var controller = storyboard.instantiateViewControllerWithIdentifier("IDENavController") as! MyCustomViewController

controller.exercisedPassed = "Ex1"

self.presentViewController(controller, animated: true, completion: nil)

试试这个。这对我有用

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)

希望这会有帮助。

据我所知,你的问题不是很清楚

//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)

对于那些正在寻找Swift 3/4答案的人:

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)

如果它只是一个字符串,请使用nsuserdefaults或使用setter方法设置变量这里有一个突出的解释:不要使用nsuserdefaults。按正确的方式操作。我的视图实际上有一个嵌入的UINavigationController。Xcode刚刚给了我以下错误,无法将类型为“UINavigationController”(0x2cdff8c)的值强制转换为“myApp.myCustomViewController”(0x1d3e18)。有什么建议吗?谢谢。是的,请尝试将MyCustomViewController更改为UINavigationControllerI。我想您不知道如何在.xib popover和当前显示的屏幕之间类似地传递变量吗?有一些困难。本质上,我想把一个字符串从弹出框传递回它的父屏幕。我是否需要以某种方式重新加载父屏幕?如何在Swift 3中执行此操作?即使我也尝试过类似性质的东西…它可以工作如何在Swift 3中执行此操作?现在已经有点晚了。但是谢谢。我刚投了赞成票,没问题。很高兴我能帮忙:)