根据 UISlider 值更改 UILabel 的案例语句

Posted

技术标签:

【中文标题】根据 UISlider 值更改 UILabel 的案例语句【英文标题】:Case statement to change UILabel depending on UISlider value 【发布时间】:2016-03-13 02:04:39 【问题描述】:

所以,直接进入它。我希望根据 UISlider 的位置更改标签的值。如果滑块位于位置 1 且未触动,则标签应显示“Regular”,值为 2 时应显示“Soy”,值为 3,“Almond”。

如果你还没有猜到,那就是选择牛奶。

理想情况下,我希望使用开关/外壳。滑块的最小值为 1,表示普通牛奶。该应用程序的目的是使用云来保存订单信息,因此我对符合未来要求的最佳解决方案持开放态度。

谢谢!

目前....

@IBOutlet weak var sugarValue: UILabel!

@IBOutlet weak var sugarStepper: UIStepper!

@IBOutlet weak var milkChoice: UILabel!

@IBOutlet weak var milkChoiceSlider: UISlider!

@IBAction func sugarChange(sender: UIStepper) 
    sugarValue.text = Double(sugarStepper.value).description


@IBAction func milkChoiceChange(sender: UISlider) 
    milkChoice.text = String(milkChoiceSlider.value)


override func viewDidLoad() 
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.


override func didReceiveMemoryWarning() 
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.

我知道当前设置不会显示标签中的文本,我试图让它首先显示 1、2、3 值但无济于事。

【问题讨论】:

【参考方案1】:

这是一个代码 sn-p... 如您所见,您可以使用值数组,在这种情况下您不需要“大小写”:)

import UIKit

class ViewController: UIViewController 

    @IBOutlet var milkChoiceLabel: UILabel!
    @IBOutlet var milkChoiceSlider: UISlider!
    @IBOutlet var sugarValue: UILabel!

    var labelValues: [String] = ["Regular", "Soy", "Almond"]


    override func viewDidLoad() 
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    

    override func didReceiveMemoryWarning() 
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    

    @IBAction func sliderValueChanged(sender: UISlider) 

        sender.value = roundf(sender.value)

        let value = Int(sender.value)

        sugarValue.text = value.description

//        switch (sender.value) 
//        case 1:
//            milkChoiceLabel.text = labelValues[0]
//            break
//        case 2:
//            milkChoiceLabel.text = labelValues[1]
//            break
//        case 3:
//            milkChoiceLabel.text = labelValues[2]
//            break
//        default:
//            break
//        

        // or better ...

        milkChoiceLabel.text = labelValues[value - 1];

    


【讨论】:

【参考方案2】:

这里真正的问题是您误用 UISlider 作为三态开关。滑块是连续的;这不是一个开关。如果你想要一个三态开关,你应该使用一个三态开关,即 UISegmentedControl。

【讨论】:

以上是关于根据 UISlider 值更改 UILabel 的案例语句的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 中使用 UISlider 以编程方式更改 UILabel

在 UISlider 的缩略图上不断更改 UILabel 的值

UISlider 的上次值和当前更改值

如何使用 UIslider 更改 UILabel.font 大小

在运行时更改 UISlider 的最小值和最大值

根据 UISlider 的值更改 NSTime