将选择器添加到UIStepper的addTarget函数时出错 - Swift 3
问题描述:
我试图将UIStepper
并入UITextField
,同时递增步进器的值,UITextField
将其更新为该值。每当我跑我的应用程序并点击步进的“+”按钮将选择器添加到UIStepper的addTarget函数时出错 - 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))"
}
答
您的代码对我的作品,如Nariv说,要确保你没有以前创建的设计师为UIStepper行动(检查在连接检查员):
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))"
}
}
更新您的问题与完整且准确的错误消息。您省略了消息的导入部分。 – rmaddy
您应该将按钮绑定到'calculateButtonTapped',并通过'stepperValueChanged'更新步进值。 –
检入界面生成器(故事板),您已为该“UIStepper”设置动作,只需删除该动作即可使用。 –