我的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函数,并且日志正在打印该值,但标签的文本未更新。我做错了什么?
更新:
我只是在我的登录屏幕上放置一个滑块对象和标签,并使用相同的方法和代码来更改标签文本并且它有效,但它在我的标签栏控制器中不起作用。这是否可以解决问题所在?
答案 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)"
}
在上面的代码中,我们只是获取滑块的值并将其添加到字符串中。
然后我们将该字符串指定为标签的文本。