将标签调整为滑块值swift

时间:2015-06-04 09:11:09

标签: ios swift uislider

我的swift项目中有一个滑块和标签。在故事板上,我控制将我的滑块拖动到该页面的控制器类上,并创建了一个插座和一个动作。我控制拖动另一个标签作为插座。我正在尝试根据滑块的值更新标签。我不知道我哪里出错了。

代码:

@IBOutlet weak var slider: UISlider!

@IBOutlet weak var sliderVal: UILabel!

@IBAction func sliderValueChanged(sender: UISlider) {
    var currentValue = Int(sender.value)
    println("Slider changing to \(currentValue) ?")
    sliderVal.text = "\(currentValue) Km"
} 

我可以在日志中看到正在调用sliderValueChanged函数,并且日志正在打印该值,但标签的文本未更新。我做错了什么?

更新

我只是在我的登录屏幕上放置一个滑块对象和标签,并使用相同的方法和代码来更改标签文本并且它有效,但它在我的标签栏控制器中不起作用。这是否可以解决问题所在?

7 个答案:

答案 0 :(得分:13)

更新主队列中的滑块值

@IBAction func sliderValueChanged(sender: UISlider) {
    var currentValue = Int(sender.value)
    println("Slider changing to \(currentValue) ?")
    dispatch_async(dispatch_get_main_queue(){
        sliderVal.text = "\(currentValue) Km"
    })
}

我希望这对你有所帮助。

答案 1 :(得分:2)

试试这个

    var currentValue = Int(slider.value)
    println("Slider changing to \(currentValue) ?")
    startTime.text = "\(currentValue) Km"

答案 2 :(得分:0)

如果你想以编程方式进行,这是一种方式。

var slider: UISlider()
var label: UILabel()

func numberValueChanged(sender: UISlider) {
    slider.setValue(Float(Int(slider.value)), animated: true)
    updateLabels(slider.value)
}
fun updateLabels(nV: Float?) {
    if let v = nV {
        self.label.text = "\(v)"
    }
}

slider.addTarget (self,
                 action: #selector(numberValueChanged)
                 forControlEvents: UIControlEvents.ValueChanged
)

希望这有用:)

答案 3 :(得分:0)

斯威夫特3: 为其UIControlEvents选择.allEvents。

slider.addTarget(self, action: #selector(ViewController.updateKmsLabel(sender:)), for: .allEvents)
// To use
func updateKmsLabel(sender: UISlider!) {
    let value = Int(sender.value)
    DispatchQueue.main.async {
        self.kmsLabel.text = "\(value)"
        print("Slider value = \(value)")
    }
}

答案 4 :(得分:0)

类ViewController:UIViewController {

@IBOutlet weak var imgView: UIImageView!
@IBOutlet weak var slideroutlet: UISlider!
@IBOutlet weak var lblValue: UILabel!

override func viewDidLoad() {
    super.viewDidLoad()

}

@IBAction func slider(_ sender: Any) {

    lblValue.text = String(slideroutlet.value)
    imgView.alpha = CGFloat(slideroutlet.value)
}

答案 5 :(得分:0)

这是我所做的,并且似乎奏效了:

// For the slider
@IBOutlet weak var slider: UISlider!

// For the label displaying the slider value
@IBOutlet weak var sliderVal: UILabel!

// For the "submit" button action
@IBAction func newSliderValue(_ sender: Any) {
    sliderVal.text = String(slider.value)
}

请注意,我使用按钮提交了新的滑块值,而不是您提交的值。

答案 6 :(得分:0)

这是我在最新的 Xcode 12.5 和 IOS 14 上使用的:

@IBAction func sliderValue(_ sender: Any) {
    label.text = "\(slider.value)"
}

在上面的代码中,我们只是获取滑块的值并将其添加到字符串中。

然后我们将该字符串指定为标签的文本。