2017-05-03 178 views
0

我有一個問題,我似乎無法自己解決其他ViewControllers變量的訪問,我有兩個視圖控制器,第一個包含存儲整數三個變量。在我的第二個視圖控制器上,我有3個滑塊,它們在每個滑塊下用一個數字操作標籤。在斯威夫特3

我希望從這3個滑塊的數字替換在第一個視圖控制器上設置的三個變量中的數字,當我單擊第二個視圖控制器上的按鈕時,但是當我鍵入變量名時,它不會沒有出現在第二個視圖控制器?

有人能解釋一下我可能是做錯了,因爲我認爲變量是公衆和整個我的應用程序在全球訪問,但我竭力要弄清楚什麼我做錯了。

非常感謝我提前

下面是我的一些代碼的要求:

import UIKit 
import AVFoundation 

class ViewController: UIViewController { 

    var timer = Timer() 

    var softTime = 180 
    var mediumTime = 300 
    var hardTime = 600 

    var chosenTime = 0 

我想softTime,mediumTime & hardTime從按鈕在接下來的視圖控制器改變:

import UIKit 

class SettingsViewController: UIViewController { 


    @IBOutlet weak var softLabel: UILabel! 
    @IBOutlet weak var softSliderValue: UISlider! 
    @IBAction func softSlider(_ sender: Any) { 

     let currentValue = Int(softSliderValue.value) 

     softLabel.text = "\(currentValue)" 

    } 

    @IBOutlet weak var mediumLabel: UILabel! 
    @IBOutlet weak var mediumSliderValue: UISlider! 
    @IBAction func mediumSlider(_ sender: Any) { 

     let currentValue = Int(mediumSliderValue.value) 

     mediumLabel.text = "\(currentValue)" 

    } 

    @IBOutlet weak var hardLabel: UILabel! 
    @IBOutlet weak var hardSliderValue: UISlider! 
    @IBAction func hardSlider(_ sender: Any) { 

     let currentValue = Int(hardSliderValue.value) 

     hardLabel.text = "\(currentValue)" 

    } 

    @IBAction func setTimesButton(_ sender: Any) { 



    } 


    override func viewDidLoad() { 
     super.viewDidLoad() 

     // Do any additional setup after loading the view. 
    } 

} 
+0

發佈您的代碼。你是否還在你的第二個ViewController中聲明瞭一個變量來引用第一個ViewController? –

+0

使用協議從第二視圖控制器的數據傳送到第一視圖控制器 –

+0

@f_qi喜感謝您的迅速答覆。我會將我的代碼發回到電腦。不,我沒有引用它。你有一個我可以遵循的例子嗎? – Elfuthark

回答

0
//in Second VC 
protocol PassDataDelegte: class { 

    func your method(first: String, second: String, third: String) 
} 

weak var delegate: PassDataDelegte? 

func youction button() { 

delegate?.yourmethod(first, timeString: second, third: date) 
} 



// in First VC 
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
     if segue.identifier == "DeadlineSegue" { 
      let dvc = segue.destinationViewController as! YourSecondViewController 
      dvc.delegate = self 
     } 
    } 


    extension YourFirstViewController: PassDataDelegte { 
    func sendDateTime((first: String, second: String, third: String) { 
     print(first) 
     print(second) 
     print(third) 
    }