在斯威夫特3
问题描述:
我有一个问题,我似乎无法自己解决其他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.
}
}
答
//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)
}
发布您的代码。你是否还在你的第二个ViewController中声明了一个变量来引用第一个ViewController? –
使用协议从第二视图控制器的数据传送到第一视图控制器 –
@f_qi喜感谢您的迅速答复。我会将我的代码发回到电脑。不,我没有引用它。你有一个我可以遵循的例子吗? – Elfuthark