【发布时间】:2021-03-29 14:37:02
【问题描述】:
我有 5 个滑块引用相同的 @IBAction func sliderDidSlide()。每个 UISlider 都有一个标签 0...4。如何获得每个滑块的值?我想使用 sender.tag 来获取哪个滑块,然后使用 .value 来获取它的值。我已经尝试过 sender.tag.value,但这不起作用。
以下是我想要做的,但它不起作用。我试过搜索,但找不到解决方案。我知道我可以有多个@IBAction,但如果可能的话,我想保存代码并使用标签将它们全部放在同一个@IBAction 中。任何帮助将不胜感激。谢谢。
@IBAction func sliderDidSlide(_ sender: UISlider) {
let maxPrice = 10000
switch sender.tag {
case 0:
let price = maxPrice * sender.tag.value // this doesn't work
label1.text = "\(price)"
case 1:
// same idea as case 0
case 2:
<#code#>
case 3:
<#code#>
case 4:
<#code#>
default:
break
}
}
【问题讨论】:
-
你不应该使用
sender.value吗? -
@Andrew 是对的。应该是
let price = maxPrice * sender.value -
@Andrew 通常我会使用 sender.value 如果有一个 UISlider 附加到 IBAction。但是我有多个滑块引用同一个 IBAction,所以我需要一种方法来知道哪个滑块的值正在改变。这就是我使用 sender.tag 的原因。我试过了: let price = Int(Float(maxPrice) * sender.value) 但这也行不通。
-
@aheze 如果只有 1 个 UISlider 连接到 IBAction,我通常会使用 sender.value。但是,我在同一个 IBAction 中有 5 个滑块,这就是为什么我需要使用标签来知道哪些滑块值正在发生变化。
-
谢谢大家的帮助