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

gajydyqb  于 2023-03-05  发布在  iOS
关注(0)|答案(1)|浏览(143)

下面的代码:

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

上面的行给我带来了问题。
更新:

x4shl7ld

x4shl7ld1#

选择器可以是带有Objective C风格选择器的字符串,也可以是Swift方法引用。您需要使用以下两种选择之一:
雨燕款式:

#selector(LoginViewModel.userNameChanged(textField:))

目标C样式:

#selector("userNameChangedtextField:")

只要有可能,Swift风格就更好,因为它清晰明了,而且编译器强制正确。

相关问题