Reputation: 9660
I have the following code:
struct LoginViewModel {
var userName :String
var password :String
func userNameChanged(textField :UITextField) {
}
}
Inside my view controller I want to attach the editingChanged selector to fire the userNameChanged event:
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
The above line is giving me issues.
UPDATE:
Upvotes: 2
Views: 651
Reputation: 63272
A selector either is a string with an Objective C style selector, or a Swift method reference. You need to use one of these two:
Swift style:
#selector(LoginViewModel.userNameChanged(textField:))
Objective C style:
#selector("userNameChangedtextField:")
Whenever possible, the Swift style is preferred for its clarity and compiler-enforced correctness.
Upvotes: 5