2015-03-26 4 views
0

Я изучил другие вопросы, связанные с UIStepper, и кажется, что никто не отвечает на мой конкретный вопрос (и все они в Objective C).Использовать UIStepper для увеличения/уменьшения предварительно заполненного UITextField

Вот мой код:

class EditItemViewController: UIViewController { 

    @IBOutlet weak var myTextField: UITextField! 

    @IBOutlet weak var myStepper: UIStepper! 

    @IBAction func stepperChanged(sender: UIStepper) { 
     var currentValue = myTextField()! 
     let valueFromStepper = Int(sender.value).description 
     currentValue += valueFromStepper.toInt()! 
     myTextField = currentValue.description 
    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     myTextField = NSUserDefaults.standardUserDefaults().stringForKey("item") 

     myStepper.autorepeat = false 

    } 

текстовое поле заполняется значением из UserDefaults. Пользователь может изменить его в текстовом поле или использовать степпер. Прямо сейчас, нажав + на шагере, правильно добавьте 1 к значению текстового поля. Однако при повторном нажатии добавляется 2, затем 3 и т. Д. Функция уменьшения не работает. Что мне не хватает?

+1

Узнайте, как использовать * отладчик *! Установите контрольную точку и проверите переменные. Я уверен, что вы быстро найдете свою ошибку! –

+0

@MartinR Как только я начал читать ваш комментарий, я понял, что делаю неправильно. Спасибо. Но как насчет функции декремента? – Shades

ответ

1

Ваша логика неверна. Каждый раз, когда изменяется значение шага, вы просто добавляете текущее значение шага в текстовое поле. Значение stepper увеличивается или уменьшается при нажатии кнопок + или -. Вам нужно будет отслеживать текущее значение шага, а затем сравнить его, когда значение изменится, чтобы увидеть, увеличилось или уменьшилось. Затем вместо добавления текущего значения в значение текстового поля добавьте или вычтите 1.