第二个错误 ViewController 'doneAccessory' 的重新声明无效

Error in 2nd ViewController Invalid redeclaration of 'doneAccessory'

我的问题下方是我在 xCode 10 中用于在弹出键盘上放置 "Done" 按钮的代码。 我有第二个 ViewController 但不知道如何在第二个上使用此代码。我的第二个 ViewController 中显示的错误是:

Invalid redeclaration of 'doneAccessory'
Invalid redeclaration of 'addDoneButtonOnKeyboard()'
Invalid redeclaration of 'doneButtonAction()'

extension UITextField{

    @IBInspectable var doneAccessory: Bool{
        get{
            return self.doneAccessory
        }
        set (hasDone) {
            if hasDone{
                addDoneButtonOnKeyboard()
            }
        }
    }

    func addDoneButtonOnKeyboard()
    {
        let doneToolbar: UIToolbar = UIToolbar(frame: CGRect.init(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 50))
        doneToolbar.barStyle = .default

        let flexSpace = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
        let done: UIBarButtonItem = UIBarButtonItem(title: "Done", style: .done, target: self, action: #selector(self.doneButtonAction))

        let items = [flexSpace, done]
        doneToolbar.items = items
        doneToolbar.sizeToFit()

        self.inputAccessoryView = doneToolbar
    }

    @objc func doneButtonAction()
    {
        self.resignFirstResponder()
    }
}

请将此 UITexfield 扩展添加到您的助手 class。将所有扩展都放在助手 class.

中是一种很好的做法

您无需对第二个视图控制器进行任何设置。您需要打开您的故事板和 select 您想要完成按钮的文本字段。找到图片设置完成按钮就没有问题了