2017-01-10 2 views
0

Я пытаюсь включить UIStepper в UITextField, а увеличивающееся значение шагового, в UITextField обновление с ним до этого значения. Я продолжаю получать ошибку:Ошибка при добавлении селектора addTarget функции для UIStepper - Swift 3

"Terminating app due to uncaught exception ''NSInvalidArgumentException', reason: '-[Calculator.SplitViewController stepperValueChanged:]: unrecognized selector sent to instance 0x7fd730c0af30"`

Всякий раз, когда я запускаю свое приложение и нажимаю кнопку «+» на шагомере.

Любые решения? Я проверил свою функцию выбора, и я думаю, что это выглядит правильно.

override func viewDidLoad() { 
    super.viewDidLoad() 

    partyOfStepper.autorepeat = true 
    partyOfStepper.minimumValue = 1 
    partyOfStepper.maximumValue = 99 
    partyOfTextField.text = "\(Int(partyOfStepper.value))" 
    partyOfStepper.addTarget(self, action: #selector(stepperValueChanged(stepper:)), for: .valueChanged) 

} 


@IBAction func calculateButtonTapped(_ sender: Any) { 
} 


func stepperValueChanged(stepper: UIStepper) { 

    let stepperMapping: [UIStepper: UITextField] = [partyOfStepper: partyOfTextField] 
    stepperMapping[stepper]!.text = "\(Int(stepper.value))" 

} 
+0

обновления на ваш вопрос полное и точное сообщение об ошибке. Вы оставили часть импорта сообщения. – rmaddy

+0

Вы должны привязать кнопку к 'calculateButtonTapped' и обновить значение шага с помощью' stepperValueChanged'. –

+0

Проверьте в построителе интерфейса (раскадровки), что вы установили действие для этого 'UIStepper', просто удалите это действие, и оно будет работать для вас. –

ответ

1

Ваш код работает для меня, как Nariv сказал убедитесь, что вы не ранее создали действие в конструкторе для UIStepper (проверьте в инспекторе Connections):

import UIKit 

class ViewController: UIViewController { 

    @IBOutlet weak var partyOfStepper: UIStepper! 
    @IBOutlet weak var partyOfTextField: UITextField! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     partyOfStepper.autorepeat = true 
     partyOfStepper.minimumValue = 1 
     partyOfStepper.maximumValue = 99 
     partyOfTextField.text = "\(Int(partyOfStepper.value))" 
     partyOfStepper.addTarget(self, action: #selector(stepperValueChanged(stepper:)), for: .valueChanged) 

    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
    } 

    func stepperValueChanged(stepper: UIStepper) { 

     let stepperMapping: [UIStepper: UITextField] = [partyOfStepper: partyOfTextField] 
     stepperMapping[stepper]!.text = "\(Int(stepper.value))" 

    } 

} 

 Смежные вопросы

  • Нет связанных вопросов^_^