应用程序在我设置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
}
}
}
答案 0 :(得分:0)
根据您的错误,您的listNameTextField
就是UIView
。
检查您的xib
/ storyboard
中的连接。
您无法将情节提要中的UIView
的类型更改为UITextField
,因为情节提要在xml中为UITextField
生成了其他属性。
相反,您需要从情节提要中删除原始的UIView
,并添加新的UITextField
并建立新的连接。