无需进入控制器Swift即可将数据传递到特定的View Controller

时间:2014-12-30 10:54:53

标签: ios swift

我正在创建一个包含很多视图的应用。当我从一个视图导航到另一个视图时,我希望将数据发送到第三个视图而不进入视图。我知道这是使用此代码执行此操作的一种方法:

let nextView = self.storyboard?.instantiateViewControllerWithIdentifier("view3") as lastViewController
nextView.data = 1103

但是,如果我这样做,并且没有移动到视图,数据将无法保存。如何在不输入数据的情况下保存数据?我需要打开它吗?

在第一个视图中:

var chosenItem:Int = 0
@IBAction func buttonClicked(sender: AnyObject) {
    if sender.tag == 0 {
        chosenItem = 1
    } else if sender.tag == 1 {
        chosenItem = 2
    } else if sender.tag == 2 {
        chosenItem = 3
    }
}

这就是我的代码现在的样子:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "toView2" {
        let nextView = segue.destinationViewController as questionAgeViewController
        nextView.firstAnswer = chosenItem
    }
}

在下一个视图中,我发送第一个项目和第二个项目。如您所知,这不是获取信息的最佳方式。还有更好的吗?

2 个答案:

答案 0 :(得分:2)

根据您的要求创建单件类并向其中添加属性。

现在,您可以从firstViewController设置其属性,并从SecondViewController访问它。

class Singleton {
  class var sharedInstance: Singleton {
    struct Static {
      static var instance: Singleton?
      static var token: dispatch_once_t = 0
    }

    dispatch_once(&Static.token) {
      Static.instance = Singleton()
    }

    return Static.instance!
  }
}

Swift的Singleton教程

答案 1 :(得分:2)

我认为您可能正在寻找全局变量。使用此代码制作变量:

struct globalVars {
    static var firstVar = "Your text"
    static var secondVar = Some number
    static var thirdVar = Some array
}

在另一个视图中,您可以访问以下信息:

let globalText = globalVars.firstVar
println(globalText)

要编辑变量,只需使用以下代码:

globalVars.firstVar = "The new text"