如果语句没有在Swift中呈现?

时间:2014-12-12 18:26:03

标签: ios swift

我是iOS开发的新手。我决定学习如何处理滑块。但是,我遇到了一些困难。

所以我写了一些代码,当滑块最小时,显示的文本将是“Min Slider”,最大值相同。

import UIKit

class ViewController: UIViewController {

@IBOutlet var displayText: UILabel!
@IBOutlet var editText: UITextField!
@IBOutlet var slider: UISlider!
var temp = "Text Goes Here"

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 changeText(sender: AnyObject) {
    temp = editText.text
    displayText.text = temp
    editText.text = ""
}

@IBAction func textSize(sender: AnyObject) {
    if (slider.value == 0){
        displayText.text = "Min Slider"
    }
    if (slider.value == 2){
        displayText.text = "Max Slider"
    }
    else{
        displayText.text = temp
    }
}
}

但是,当滑块处于最小值时,它不会显示文本。但它适用于最大值。 所以,我试过了:

@IBAction func textSize(sender: AnyObject) {
    if (slider.value == 2){
        displayText.text = "Max Slider"
    }
    if (slider.value == 0){
        displayText.text = "Min Slider"
    }
    else{
        displayText.text = temp
    }
}

现在“Min Slider”有效但不是“Max Slider”。它看起来像第一个if语句没有被渲染。

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:4)

在第一个示例中,如果滑块值为最小值,则

if分支
if (slider.value == 0){
    displayText.text = "Min Slider"
}
执行

,然后执行

else分支
if (slider.value == 2){
    displayText.text = "Max Slider"
}
else{
    displayText.text = temp
}

因此文本会立即被覆盖。您可能想要的是

if (slider.value == 0){
    displayText.text = "Min Slider"
}
else if (slider.value == 2){   // "else if" here!
    displayText.text = "Max Slider"
}
else{
    displayText.text = temp
}

或更好

if (slider.value == slider.minimumValue) {
    displayText.text = "Max Slider"
} else if (slider.value == slider.maximumValue) {
    displayText.text = "Min Slider"
} else {
    displayText.text = temp
}

避免使用"魔术数字"

代码中的02

答案 1 :(得分:1)

第一个if正在执行。问题是第二个if中的else子句也正在执行