我正在创建一个包含很多视图的应用。当我从一个视图导航到另一个视图时,我希望将数据发送到第三个视图而不进入视图。我知道这是使用此代码执行此操作的一种方法:
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
}
}
在下一个视图中,我发送第一个项目和第二个项目。如您所知,这不是获取信息的最佳方式。还有更好的吗?
答案 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"