使用 UISlider 更新标签中的字符串而不是 Int/Double 等

Posted

技术标签:

【中文标题】使用 UISlider 更新标签中的字符串而不是 Int/Double 等【英文标题】:Using UISlider for updating Strings in a Label rather than a Int/Double etc 【发布时间】:2016-09-24 19:43:55 【问题描述】:

我试图让 UISlider 根据它在“滑动条”中的位置给我字符串值,我们应该说。

我正在寻找的是,如果 Slider 的 Int 值为 1,那么 textLabel 将是“每日”,如下所示:

1 = "Daily"
2 = "Weekly"
3 = "Monthly"
4 = "Quarterly"
5 = "Annually"

我知道使用 UIPicker 会更容易,但老实说,它会破坏应用程序的设计:(

到目前为止,这是我的代码...注意*我已经把 Outlet 和 Action 都放了。

@IBAction func durationAction(_ sender: UISlider) 

    durationLabel.text = "\(Int(durationSlider.value))"

if durationSlider.value == 1

    self.durationLabel.text = "Daily"

if durationSlider.value == 2

    self.durationLabel.text = "Weekly"

if durationSlider.value == 3

    self.durationLabel.text = "Monthly"

if durationSlider.value == 4

    self.durationLabel.text = "Quarterly"

if durationSlider.value == 5

    self.durationLabel.text = "Annually"

上面的代码只给了我第一个和最后一个位置。这显然意味着我做错了什么。

任何帮助将不胜感激。 - 谢谢大家。

【问题讨论】:

【参考方案1】:

滑块的值为Floats。在检查之前,您应该将它们四舍五入到最近的Int。如果将Strings 放入数组中,则可以直接选择它们。

@IBAction func durationAction(_ sender: UISlider) 
    let intervals = ["Daily", "Weekly", "Monthly", "Quarterly", "Annually"]
    self.durationLabel.text = intervals[Int(sender.value.rounded()) - 1]

【讨论】:

完美运行并大大缩短了代码,感谢@vacawama【参考方案2】:

试试这样的。

@IBAction func durationAction(_ sender: UISlider)

    let integerValue = Int(sender.value)

    self.durationLabel.text = "\(integerValue)"

    switch integerValue 
    case 1 : print("Daily")
    case 2 : print("Weekly")
    case 3 : print("Monthly")
    case 4 : print("Quarterly")
    case 5 : print("Annually")
    default : ()
    

【讨论】:

以上是关于使用 UISlider 更新标签中的字符串而不是 Int/Double 等的主要内容,如果未能解决你的问题,请参考以下文章

根据 UISlider 值不断更新标签

使用 UISlider 更新 UILabel 会为 Sender 调用抛出“未解析的标识符”错误

使用 AVAudioPlayer 进行 UISlider 更新

当我滚动时,uitableviewcell 中的 UIslider 不再自动更新

iOS6 中的 UISlider 自定义问题

Firestore - UITableViewCell 内的 UISlider