将选择器添加到 UIStepper语言 - Swift 3 的 addTarget 函数时出错



我正在尝试将UIStepper合并到UITextField中,同时增加步进器的值,UITextField会随之更新为该值。我不断收到错误:

"由于未捕获的异常"NSInvalidArgumentException"而终止应用程序,原因:"-[计算器.SplitViewController stepperValueChanged:]:无法识别的选择器发送到实例 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))"
    }
}

最新更新