【问题标题】: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 在我更改滑块值时正在发生变化。但是,为什么我的视图控制器上的标签没有改变?

【问题讨论】:

    标签: swift uilabel uislider


    【解决方案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 like slider.addTarget(self, action: "sliderValueChanged:", forControlEvents:.ValueChanged) ...更多信息 ...检查apptuitions.com/…
    • 很高兴为您提供帮助..:)
    【解决方案2】:

    确保您对滑块有绑定操作.... 这里 num 是 CGFloat 值,sender.value 是 Fl​​oat...

    var num: CGFloat = 9
    label.text = "\(num)"
    
    @IBAction func sliderValueChanged(sender: UISlider) {
        num = CGFloat(sender.value)
        label.text = "\(num)"
     }
    

    【讨论】:

      猜你喜欢
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多