2016-09-24 9 views
0

我试图让UISlider给我基于它在“滑动条”内的位置的字符串值。使用UISlider更新标签中的字符串而不是Int/Double等

我所寻找的是如果滑块的int值是1,那么为textLabel将“日报”按如下:

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

我知道这将是更容易使用UIPicker但在所有诚实它会毁了应用程序:(

这里是我到目前为止的代码的设计...注*我已经把两个出口&行动。

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

以上的鳕鱼e只给我第一个和最后一个位置。这显然意味着我做错了什么。

任何帮助将不胜感激。 - 多谢你们。

回答

1

滑块的值是Float s。检查前,您应该将它们四舍五入到最近的Int。如果将String放入数组中,可以直接选择它们。

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

完美工作并缩短代码很多谢谢@vacawama –

1

尝试类似这样的东西。

@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 :() 
    } 
} 
相关问题