当我以编程方式制作滑块时,为啥滑块不更新标签?
Posted
技术标签:
【中文标题】当我以编程方式制作滑块时,为啥滑块不更新标签?【英文标题】:Why is the slider not updating the label when I make the slider programmatically?当我以编程方式制作滑块时,为什么滑块不更新标签? 【发布时间】:2016-01-21 05:01:16 【问题描述】:我制作了一个滑块和标签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
在我更改滑块值时正在发生变化。但是,为什么我的视图控制器上的标签没有改变?
【问题讨论】:
【参考方案1】:您必须使用滑块为它创建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)"
【讨论】:
抱歉,如果我没有说清楚,但我以编程方式创建了滑块和标签 以编程方式将目标设置为滑块@Amanda likeslider.addTarget(self, action: "sliderValueChanged:", forControlEvents:.ValueChanged)
...更多信息 ...检查apptuitions.com/…
很高兴为您提供帮助..:)【参考方案2】:
确保您对滑块有绑定操作.... 这里 num 是 CGFloat 值,sender.value 是 Float...
var num: CGFloat = 9
label.text = "\(num)"
@IBAction func sliderValueChanged(sender: UISlider)
num = CGFloat(sender.value)
label.text = "\(num)"
【讨论】:
以上是关于当我以编程方式制作滑块时,为啥滑块不更新标签?的主要内容,如果未能解决你的问题,请参考以下文章