簡體   English   中英

根據UISlider值更改UILabel的案例聲明

[英]Case statement to change UILabel depending on UISlider value

因此,直接進入它。 我希望根據UISlider的位置更改標簽的值。 如果滑塊處於位置1且未觸碰,則標簽應顯示“ Regular”(常規),在值2處應顯示“ Soy”(大豆),在值3處應顯示“杏仁”。

如果您還沒有猜到,那就是選擇牛奶。

理想情況下,我希望使用開關/盒。 滑塊的最小值為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值,但無濟於事。

這是一個代碼段...如您所見,您可以使用值數組,在這種情況下,您不需要“ case” :)

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];

    }

}

真正的問題是您將UISlider誤用作三態開關。 滑塊是連續的 ; 這不是一個開關。 如果需要三態開關,則應使用三態開關,即UISegmentedControl。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM