2016-09-24 5 views
0

나는 "슬라이드 바"내의 위치를 ​​기반으로 문자열 값을 제공하기 위해 UISlider를 얻으려고합니다.Int/Double 등이 아닌 Label에서 문자열을 업데이트하기 위해 UISlider 사용

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

나는 UIPicker 만에를 사용하는 것이 쉬울 것 알고 슬라이더의 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 :() 
    } 
} 
관련 문제