2016-09-24 15 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 :() 
    } 
} 
相關問題