2016-09-24 15 views
0

私は、「スライドバー」内の位置に基づいてString値を与えるためにUISliderを取得しようとしています。私はUIPickerを使用するために容易になるだろう知っているInt/Doubleなどではなくラベル内の文字列を更新するためにUISliderを使用する

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

が、中:

私は何を探していますがスライダーののInt値が1であるならば、textLabelは、以下のとおり「毎日」になります正直なところ、それはアプリのデザインを台無しにする:(

ここでは私のコードは、注...これまでのところです*私は両方のアウトレット&アクションを入れている。

@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です。確認する前に、最も近い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 :() 
    } 
} 
関連する問題