SceneA - > SceneB - > SceneC - > SceneD
如何将值selectedValue从sceneA传递给sceneD
答案 0 :(得分:2)
一个好的方法是你可以使用NSUserDefaults
,你可以这样存储:
NSUserDefaults.standardUserDefaults().setObject(YourVariable, forKey: "YourKey")
之后,你可以从任何viewController
访问它,如下所示:
var returnValue = NSUserDefaults.standardUserDefaults().objectForKey("YourKey") as? String
希望它有所帮助。
答案 1 :(得分:1)
在正确的架构中,人们会将值从SceneA传递给B,然后传递给C,最后传递给D. 但是,如果您对此不满意,可以采取多种措施。
直接,SceneA只能将数据传递给SceneB。当然它不能直接将数据传递给SceneD,因为它还不存在。 因此,无论是在创建时,SceneD都可以获取UINavigationController中的currnet UIViewControllers列表,并获取SceneA并访问selectedValue。 或者你可以让单例类表现为某种“dataManager”。 SceneA应该在其中保存价值。而SceneD应该从中获得价值。
答案 2 :(得分:1)
1的 NSUserDefaults的强>
您可以将变量存储在NSUserDefaults
中。您可以通过以下代码保存(目标C,您可以轻松地将其转换为swift)
[[NSUserDefaults standardUserDefaults] setObject:obj forKey:@"Key"];
您可以通过
进行检索 [[NSUserDefaults standardUserDefaults] objectForKey:@"key"];
2。的的appDelegate 强>
您可以在Appdelegate变量中保存和检索您的对象,并按照
在任何地方使用它[UIApplication sharedApplication].delegate