ios 将标签快速调整为滑块值

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/30639675/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-31 06:13:01  来源:igfitidea点击:

adjusting label to slider value swift

iosswiftuislider

提问by user2363025

I have a slider and label in my swift project. On the storyboard, I control dragged my slider onto my controller class for that page and created an outlet and also an action. I control dragged another label as an outlet. I am trying to update the label based on the slider's value. I don't know where i am going wrong.

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

Code:

代码:

@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"
} 

I can see in the log the sliderValueChanged funciton is being called and the log is printing the value but the label's text is not updating. What am I doing wrong?

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

Update:

更新

I just put a slider object and label on my login screen and used the same methodology and code to change the label text and it worked but it will not work inside my tab bar controller. Does this shed any light on what the issue may be?

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

回答by MMT

Update the slider value in Main queue

更新主队列中的滑块值

@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"
    })
}

I hope this is helpful to you.

我希望这对你有帮助。

回答by hiren

class ViewController: UIViewController {

类视图控制器: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)
}

回答by Memon Irshad

try this

尝试这个

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

回答by Gary Mansted

Swift 3: Select .allEvents for its UIControlEvents.

Swift 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)")
    }
}

回答by BotaGuy

This is what I did and it seemed to have worked:

这就是我所做的,它似乎奏效了:

// 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)
}

Note, I used a button to submit my new slider value, not what you did.

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

回答by Milap Jhumkhawala

If you want to do it programmatically, this is one way.

如果您想以编程方式执行此操作,这是一种方法。

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
)

Hope this was helpful :)

希望这有帮助:)