传递没有Segues的标签

时间:2015-04-07 09:19:21

标签: ios xcode swift

SceneA - > SceneB - > SceneC - > SceneD

如何将值selectedValue从sceneA传递给sceneD

  1. 不在所有其他场景中存储变量
  2. - >是segues

3 个答案:

答案 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