当我以编程方式制作滑块时,为什么滑块没有更新标签?

时间:2016-01-21 05:01:16

标签: swift uilabel uislider

我制作了一个滑块,标签为 PROGRAMMATICALLY 。我希望标签显示滑块的值,但标签只显示我最初分配的值。

代码:

<node2>

当我<main> <h1> <node1>duplicate</node1> <node2> Data </node2> <node1>New data</node1> <node1>New data 2</node1> </h1> </main> 时,它显示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)" } 正在改变,因为我更改了滑块值。但是,为什么我的视图控制器上的标签没有改变?

2 个答案:

答案 0 :(得分: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)"
    }
}

答案 1 :(得分:0)

确保你对滑块绑定动作.... 这里num是CGFloat值,sender.value是Float ......

$('.home-img-block').find('img').each(function() {
   var imgClass = (this.width / this.height > 1) ? 'wide' : 'tall';
   console.log(imgClass);
   $(this).addClass(imgClass);
 });