当我以编程方式制作滑块时,为什么滑块不更新标签?
Why is the slider not updating the label when I make the slider programmatically?
我制作了一个滑块和标签程序化。我想让标签显示滑块的值,但标签只显示我最初分配的值。
代码:
var num: CGFloat = 9
override func viewDidLoad() {
let label = UILabel(frame: CGRectMake(0, 0, 60, 40))
label.text = "\(num)"
self.view.addSubview(label)
let slider = UISlider(frame:CGRectMake(0, 0, 60, 30))
slider.value = Float(num)
slider.addTarget(self, action: "changedSliderValue:", forControlEvents: .ValueChanged)
self.view.addSubview(slider)
}
func changedSliderValue(sender: UISlider!){
num = CGFloat(sender.value)
label.text = "\(num)"
}
当我执行 print(label.text!)
时,它显示 label.text
随着我更改滑块值而发生变化。但是,为什么我的视图控制器上的标签没有改变?
您必须使用滑块创建 IBAction
,如下面的代码所示:
@IBAction func sliderValueChanged(sender: UISlider) {
num = sender.value
label.text = "\(num)"
}
有关更多信息,请参阅 THIS 教程。
更新:
以下是您的完整工作代码:
import UIKit
class ViewController: UIViewController {
var num: CGFloat = 9
let label = UILabel(frame: CGRectMake(0, 0, 60, 40))
override func viewDidLoad() {
super.viewDidLoad()
label.text = "\(num)"
self.view.addSubview(label)
let slider = UISlider(frame:CGRectMake(0, 0, 60, 30))
slider.value = Float(num)
slider.addTarget(self, action: "changedSliderValue:", forControlEvents: .ValueChanged)
self.view.addSubview(slider)
}
func changedSliderValue(sender: UISlider!){
num = CGFloat(sender.value)
label.text = "\(num)"
}
}
确保您已将动作绑定到滑块....
这里的 num 是 CGFloat 值,sender.value 是 Float...
var num: CGFloat = 9
label.text = "\(num)"
@IBAction func sliderValueChanged(sender: UISlider) {
num = CGFloat(sender.value)
label.text = "\(num)"
}
我制作了一个滑块和标签程序化。我想让标签显示滑块的值,但标签只显示我最初分配的值。
代码:
var num: CGFloat = 9
override func viewDidLoad() {
let label = UILabel(frame: CGRectMake(0, 0, 60, 40))
label.text = "\(num)"
self.view.addSubview(label)
let slider = UISlider(frame:CGRectMake(0, 0, 60, 30))
slider.value = Float(num)
slider.addTarget(self, action: "changedSliderValue:", forControlEvents: .ValueChanged)
self.view.addSubview(slider)
}
func changedSliderValue(sender: UISlider!){
num = CGFloat(sender.value)
label.text = "\(num)"
}
当我执行 print(label.text!)
时,它显示 label.text
随着我更改滑块值而发生变化。但是,为什么我的视图控制器上的标签没有改变?
您必须使用滑块创建 IBAction
,如下面的代码所示:
@IBAction func sliderValueChanged(sender: UISlider) {
num = sender.value
label.text = "\(num)"
}
有关更多信息,请参阅 THIS 教程。
更新:
以下是您的完整工作代码:
import UIKit
class ViewController: UIViewController {
var num: CGFloat = 9
let label = UILabel(frame: CGRectMake(0, 0, 60, 40))
override func viewDidLoad() {
super.viewDidLoad()
label.text = "\(num)"
self.view.addSubview(label)
let slider = UISlider(frame:CGRectMake(0, 0, 60, 30))
slider.value = Float(num)
slider.addTarget(self, action: "changedSliderValue:", forControlEvents: .ValueChanged)
self.view.addSubview(slider)
}
func changedSliderValue(sender: UISlider!){
num = CGFloat(sender.value)
label.text = "\(num)"
}
}
确保您已将动作绑定到滑块.... 这里的 num 是 CGFloat 值,sender.value 是 Float...
var num: CGFloat = 9
label.text = "\(num)"
@IBAction func sliderValueChanged(sender: UISlider) {
num = CGFloat(sender.value)
label.text = "\(num)"
}