设置委托时选择器错误无效:Xcode 10 swift 4

问题描述 投票:-1回答:1

应用程序在我设置TextField委托的行上崩溃:

listNameTextField = self

viewDidLoad方法

给出错误

'NSInvalidArgumentException', reason: '-[UIView setDelegate:]: unrecognized selector sent to instance

我已经尝试在listNameTextField参考上制作strong变量weak,但它不会改变问题

import UIKit

class CreateListViewController: UIViewController, UITextFieldDelegate {

    @IBOutlet var listNameTextField: UITextField!
    var listNameString: String = ""

    override func viewDidLoad() {
        super.viewDidLoad()
        self.title = "Create List"
        listNameTextField.delegate = self
    }

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

    @IBAction func submitListName(_ sender: UIButton) {
        if listNameString != "" {
            let storyboard = UIStoryboard(name: "Main", bundle: nil)
            let controller = storyboard.instantiateViewController(withIdentifier: "ListView")
            self.present(controller, animated: true, completion: nil)
        }
    }

    func textFieldShouldReturn(_ textField: UITextField) -> Bool {

        textField.resignFirstResponder()
        return true
    }

    func textFieldDidEndEditing(_ textField: UITextField) {

        if let text = listNameTextField.text {
            listNameString = text
        }
    }
}

ios uitextfield swift4 xcode10
1个回答
0
投票

根据你的错误,你的listNameTextField只是UIView。 检查xib / storyboard中的连接。

您无法将故事板中的UIView类型更改为UITextField,因为storyboard会在qmlxswpoi的xml中生成其他属性。

相反,你需要从故事板删除你原来的UITextField并添加新的UIView并建立新的连接。

© www.soinside.com 2019 - 2024. All rights reserved.