2017-05-03 179 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) 
    }