Xcode 7/Swift:保存滑块的值并在视图更改时发送到 child class
Xcode 7/Swift: Save value of slider and send to child class when view changes
我试图让某个视图上的滑块值显示在 child 视图上的文本框中。但是当加载第二个视图时,滑块的值似乎丢失并设置为零。我将如何在视图更改之前保留该滑块的值,以便使用 child 视图中的最新值?这是一些相关代码(我想将文本框 "redTextBox" 设置为 "changeRed" 滑块的值):
PARENTCLASS--------------------------------
class ViewController: UIViewController {
@IBOutlet weak var changeRed: UISlider!
@IBOutlet weak var changeGreen: UISlider!
@IBOutlet weak var changeBlue: UISlider!
var r: Float = 0
var g: Float = 0
var b: Float = 0
@IBAction func slideRed(sender: AnyObject) {
self.view.backgroundColor = UIColor(colorLiteralRed: changeRed.value, green: changeGreen.value, blue: changeBlue.value, alpha: 1.0)
r = changeRed.value
g = changeGreen.value
b = changeBlue.value
}
@IBAction func slideGreen(sender: AnyObject) {
self.view.backgroundColor = UIColor(colorLiteralRed: changeRed.value, green: changeGreen.value, blue: changeBlue.value, alpha: 1.0)
r = changeRed.value
g = changeGreen.value
b = changeBlue.value
}
@IBAction func slideBlue(sender: AnyObject) {
self.view.backgroundColor = UIColor(colorLiteralRed: changeRed.value, green: changeGreen.value, blue: changeBlue.value, alpha: 1.0)
r = changeRed.value
g = changeGreen.value
b = changeBlue.value
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.view.backgroundColor = UIColor(colorLiteralRed: changeRed.value, green: changeGreen.value, blue: changeBlue.value, alpha: 1.0)
}
......
}
CHILD CLASS----------------------------
class ColorValueVC: ViewController {
@IBOutlet weak var redTextBox: UITextField!
@IBOutlet weak var greenTextBox: UITextField!
@IBOutlet weak var blueTextBox: UITextField!
override func viewDidLoad() {
//super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
redTextBox.text = "\(changeRed.value)"
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
您的 child 继承自 parent 视图控制器。你想通过这样做达到什么目的?如果它们是两个视图控制器,其中一个连接到另一个,那么它们之间不应该有继承 link 。相反,您通过在 A.
中实现 prepareForSegue
将数据从 A 传递到 B
我试图让某个视图上的滑块值显示在 child 视图上的文本框中。但是当加载第二个视图时,滑块的值似乎丢失并设置为零。我将如何在视图更改之前保留该滑块的值,以便使用 child 视图中的最新值?这是一些相关代码(我想将文本框 "redTextBox" 设置为 "changeRed" 滑块的值):
PARENTCLASS--------------------------------
class ViewController: UIViewController {
@IBOutlet weak var changeRed: UISlider!
@IBOutlet weak var changeGreen: UISlider!
@IBOutlet weak var changeBlue: UISlider!
var r: Float = 0
var g: Float = 0
var b: Float = 0
@IBAction func slideRed(sender: AnyObject) {
self.view.backgroundColor = UIColor(colorLiteralRed: changeRed.value, green: changeGreen.value, blue: changeBlue.value, alpha: 1.0)
r = changeRed.value
g = changeGreen.value
b = changeBlue.value
}
@IBAction func slideGreen(sender: AnyObject) {
self.view.backgroundColor = UIColor(colorLiteralRed: changeRed.value, green: changeGreen.value, blue: changeBlue.value, alpha: 1.0)
r = changeRed.value
g = changeGreen.value
b = changeBlue.value
}
@IBAction func slideBlue(sender: AnyObject) {
self.view.backgroundColor = UIColor(colorLiteralRed: changeRed.value, green: changeGreen.value, blue: changeBlue.value, alpha: 1.0)
r = changeRed.value
g = changeGreen.value
b = changeBlue.value
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.view.backgroundColor = UIColor(colorLiteralRed: changeRed.value, green: changeGreen.value, blue: changeBlue.value, alpha: 1.0)
}
......
}
CHILD CLASS----------------------------
class ColorValueVC: ViewController {
@IBOutlet weak var redTextBox: UITextField!
@IBOutlet weak var greenTextBox: UITextField!
@IBOutlet weak var blueTextBox: UITextField!
override func viewDidLoad() {
//super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
redTextBox.text = "\(changeRed.value)"
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
您的 child 继承自 parent 视图控制器。你想通过这样做达到什么目的?如果它们是两个视图控制器,其中一个连接到另一个,那么它们之间不应该有继承 link 。相反,您通过在 A.
中实现prepareForSegue
将数据从 A 传递到 B