簡體   English   中英

使用 segue 在視圖控制器之間保存變量

[英]Save variables between View Controllers using a segue

我使用 Swift 和 Xcode 6.4,我想使用 Segue 將變量從一個視圖控制器傳遞到另一個視圖控制器。 當您按下按鈕時,變量持續時間應將值提供給 ViewController2。 在 ViewController2 我想再次使用這個變量。

Main.storyboard 按鈕標識符稱為 Test1

我怎樣才能做到這一點? 你能幫我寫代碼嗎? 怎么了?

謝謝

代碼視圖控制器1:

導入 UIKit

類 ViewController1: UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
}

@IBAction func ButtonTapped(sender: AnyObject) {
    var duration = 1.0
    self.performSegueWithIdentifier("Test1", sender: duration)
}


override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
    if (segue.identifier = "Test1") {
        let secondViewController = segue.destinationViewController as ViewController2
        let duration = sender as Double
        secondViewController.duration = duration
    }
}

}

代碼視圖控制器2:

導入 UIKit

類 ViewController2: UIViewController {

var duration:Double?

var result = duration + 2.0
println(\(result))

override func viewDidLoad() {
    super.viewDidLoad()
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
}

}

var duration = Double()  // now "duration" is global

@IBAction func ButtonTapped(sender: AnyObject) {
    duration = 1.0
    self.performSegueWithIdentifier("Test1", sender: duration)
    // VVV Any new variable created in this scope will be deallocated 
}   // HERE

//Then this scope starts...
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
    if (segue.identifier == "Test1") {
        let secondViewController = segue.destinationViewController as ViewController2
       // delete this... duration = sender as Double
        secondViewController.duration = duration
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM