Ползунок не исключает текущего значения по умолчанию в 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 вместо нуля. Теперь это работает. Извините ребята.