我是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语句没有被渲染。
非常感谢任何帮助!
答案 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
}
避免使用"魔术数字"
代码中的0
和2
。
答案 1 :(得分:1)
第一个if正在执行。问题是第二个if中的else子句也正在执行