在单独类的对象上调用Swift选择器

时间:2017-01-15 01:42:41

标签: ios swift

我有以下代码:

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 

以上一行给了我一些问题。

更新:

enter image description here

1 个答案:

答案 0 :(得分:2)

选择器要么是具有Objective C样式选择器的字符串,要么是Swift方法引用。您需要使用以下两种方法之一:

Swift风格:

#selector(LoginViewModel.userNameChanged(textField:))

目标C风格:

#selector("userNameChangedtextField:")

只要有可能,Swift风格就是首选,因为它的清晰度。