如何在Xcode中的两个情节提要之间传输变量?

时间:2018-06-19 15:29:12

标签: ios swift xcode

我目前正在编写一个带有两个故事板的应用程序。一个情节提要是一个入门情节提要,我在其中从用户那里获取关键信息以运行该应用程序。另一个是主应用程序。如何创建两个情节提要都可以操纵和访问的变量?我正在使用Swift。

2 个答案:

答案 0 :(得分:0)

据此post在Stackoverflow中

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 :(得分:0)

我倾向于在使用 UserDefaults 和通过 prepareForSegue 发送数据之间往返

UserDefaults指南:Setting And Getting Data With UserDefaults In Swift

prepareForSegue示例:stackoverflow prepareForSegue sample

使用prepareForSegue,在将接收数据的目标ViewController中创建空变量,然后在源视图控制器的prepareForSegue函数中进行设置。

示例

class DestinationViewController: UIViewController{
      var value1: String!
      var value2: Int!
}


//SWIFT 4
class OriginViewContoller: UIViewContoller{
      override func prepare(for segue: UIStoryboardSegue, sender: Any?){
          switch(segue.identifier){
             case "SEGUE_IDENTIFIER_HERE":
                 let vc = segue.destination as! DestinationViewController
                 vc.value1 = "Some String"
                 vc.value2 = 1234
          }
      }
}

如果我使用UserDefaults跟踪重要的用户数据,请确保在用户注销时从UserDefaults中删除此数据

示例

UserDefaults.standard.removeObject(forKey: "SOME_KEY_IDENTIFIER_HERE")