在没有Segues的故事板之间传递变量 - Swift

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在没有Segues的故事板之间传递变量 - Swift相关的知识,希望对你有一定的参考价值。

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

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

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 / PrepareForSegue的情况下传递数据?

答案

我假设您要传递数据的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)
另一答案

根据我的理解,你的问题不是很清楚

//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)
另一答案

试试这个。这对我有用。

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)

希望这会有所帮助。

另一答案

对于那些正在寻找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)

以上是关于在没有Segues的故事板之间传递变量 - Swift的主要内容,如果未能解决你的问题,请参考以下文章

故事板 Segue 与委派。哪种方法更适合在 ViewController 之间传递数据

我无法向 segues 添加标识符。有没有办法修复 ios xamarin 故事板?

故事板 segue 调用顺序

故事板中的 Segues 问题

在故事板xcode中直接从视图控制器警告启动的Segues

在没有 Segues 的 ViewController 之间传递数据