滑块不排除 Swift 中的当前默认值

Slider Not Excepting Current Default Value in Swift

很抱歉再次这样做,但我的代码还有另一个问题。当我 运行 模拟器中的程序时,如果我将滑块从其默认位置移动并点击提交按钮,它将计算 mpg。但是,如果我将滑块保留在默认位置 500,然后选择我使用的加仑数(与正常情况一样),然后点击 "Submit",我得到的 mpg 值为 0.0。我知道这是不对的。我的指导老师建议我将原本在 milesDrivenSliderValueChanged 函数中的值放入它们自己的函数中。当我这样做时,我遇到了一堆错误。我修复了它们,但我仍然得到相同的结果。我想知道我做错了什么。

这是我的滑块代码和它调用的新函数:

class SecondViewController: UIViewController,UIPickerViewDataSource,UIPickerViewDelegate
{
var BlopSoundURL =  NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("Blop", ofType: "mp3")!)

var soundAudioPlayer = AVAudioPlayer()

var miles = 0.0
var gallonsUsed = 0.0
var mpg: Double = 0.0
var currentSelection: Double?

@IBOutlet weak var milesDrivenLabel: UILabel!


@IBOutlet weak var milesDrivenSlider: UISlider!

@IBAction func milesDrivenSliderValueChanged(sender: UISlider)
{
    currentSelection = Double(sender.value)

    sliderMoved()
}

func sliderMoved()
{
    milesDrivenLabel.text = "\(round(currentSelection! * 100) / 100)"
    println("Current Selection = \(currentSelection)")
    miles = currentSelection!
}

其余代码用于选择器(我认为没有任何问题)、提交按钮和其他功能:

@IBOutlet weak var gallonsUsedPicker: UIPickerView!
let pickerData = [1,2,3,4,5,6,7,8,9,10,11,
            12,13,14,15,16,17,18,19,20,21,
            22,23,24,25,26,27,28,29,30,31,
            32,33,34,35,36,37,38,39,40,41,
            42,43,44,45,46,47,48,49,50,51,
            52,53,54,55,56,57,58,59,60,61,
            62,63,64,65,66,67,68,69,70,71,
            72,73,74,75,76,77,78,79,80,81,
            82,83,84,85,86,87,88,89,90,91,
            92,93,94,95,96,97,98,99,100]

@IBAction func submitButton(sender: UIButton)
{
    soundAudioPlayer.play()
    let rowValue = gallonsUsedPicker.selectedRowInComponent(0) + 1
    gallonsUsed = Double(rowValue)

    mpg = Double(round((miles * 100) / gallonsUsed) / 100)

    let message = "Your MPG is approximately: \(mpg)."

    let alert = UIAlertController(
        title: "Your MPG",
        message: message,
        preferredStyle: .Alert)
    let action = UIAlertAction(
        title: "Ok",
        style: .Default,
        handler: nil)
    alert.addAction(action)
    presentViewController(alert, animated: true, completion: nil)

}

func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
    return 1
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {
    return "\(row+1)"
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
    return 100
}


override func viewDidLoad()
{
    super.viewDidLoad()

    gallonsUsedPicker.dataSource = self
    gallonsUsedPicker.delegate = self

    soundAudioPlayer = AVAudioPlayer(contentsOfURL: BlopSoundURL, error: nil)


    // Do any additional setup after loading the view, typically from a nib.
}   // End of viewDidLoad

这真是令人沮丧。这可能是一个简单的修复,但我就是看不到它。我昨晚在这上面花了 3 个小时,今天早上又花了 2 个小时。任何帮助,将不胜感激。感谢您的时间和努力。

我是个傻瓜。我只需要将英里更改为 500,而不是零。现在可以了。对不起,伙计们。