我有以下代码:
struct LoginViewModel {
var userName :String
var password :String
func userNameChanged(textField :UITextField) {
}
}
在我的视图控制器中,我想附加editingChanged选择器来激活userNameChanged事件:
class LoginViewController : UIViewController {
var loginVM :LoginViewModel!
override func viewDidLoad() {
super.viewDidLoad()
loginVM = LoginViewModel(userName: "", password: "")
let userNameTextField = UITextField(frame: CGRect(x: 20, y: 100, width: 100, height: 44))
userNameTextField.backgroundColor = UIColor.red
userNameTextField.addTarget(loginVM, action: #selector("loginVM.userNameChanged"), for: .editingChanged) // THIS IS NOT WORKING
以上一行给了我一些问题。
更新:
答案 0 :(得分:2)
选择器要么是具有Objective C样式选择器的字符串,要么是Swift方法引用。您需要使用以下两种方法之一:
Swift风格:
#selector(LoginViewModel.userNameChanged(textField:))
目标C风格:
#selector("userNameChangedtextField:")
只要有可能,Swift风格就是首选,因为它的清晰度。