Ползунок не исключает текущего значения по умолчанию в Swift

Извините, что сделал это снова, но мой код пока еще одна проблема. Когда я запускаю программу в симуляторе, если я перемещаю ползунок из положения по умолчанию и нажимаю кнопку отправки, он вычисляет миль на галлон. Однако, если я оставлю ползунок в положении по умолчанию 500, затем выберу количество галлонов, которое я использовал (как обычно), и нажму "Отправить", я получу значение 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 часа только этим утром. Любая помощь будет оценена. Спасибо за ваше время и усилия.

1 ответ

Решение

Я тупица. Мне просто нужно было изменить мили на 500 вместо нуля. Теперь это работает. Извините ребята.

Другие вопросы по тегам