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

时间:2019-07-20 08:31:13

标签: ios xcode10 swift5

我的问题下面是我在xCode 10中用来在弹出键盘上放置“完成”按钮的代码。 我有第二个ViewController,但不知道如何在第二个ViewController上使用此代码。在我的第二个ViewController中显示的错误是:

  

“ doneAccessory”的无效重新声明
     重新声明'addDoneButtonOnKeyboard()'
     无效的'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()
    }
}

1 个答案:

答案 0 :(得分:1)

请将此UITexfield扩展名添加到您的帮助器类中。在您的帮助程序类中包含所有扩展程序是一种很好的做法。

您无需为第二个视图控制器进行任何设置。您需要打开情节提要,然后选择要完成按钮的文本字段。找到图像以设置完成按钮,这样您就不会遇到任何问题。

Storyboard settings