当我以编程方式制作滑块时,为什么滑块不更新标签?
问题描述:
我制作了滑块和标签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是浮动...
var num: CGFloat = 9
label.text = "\(num)"
@IBAction func sliderValueChanged(sender: UISlider) {
num = CGFloat(sender.value)
label.text = "\(num)"
}
+0
绑定你的slider'es动作ValueChanged ....你必须转换为CGFloat – Bhoomi
对不起,如果我没有说清楚,但我以编程方式创建了滑块和标签** – Amanda
你能显示你的完整代码吗? –
比编程设置目标滑块@Amanda像'slider.addTarget(self,action:“sliderValueChanged:”,forControlEvents:.ValueChanged)'...更多信息...检查http://www.apptuitions.com/programmatically -creating-uiview-uislider-uiswitch-using-swift/ –