选择器如何发送参数 选择器发送参数错误的方式“#选择器”的参数引用了未向Objective-C公开的实例方法“changePassword(电子邮件:currentPassword:newPassword:completion:)” 我不明白,您是否尝试

选择器如何发送参数 选择器发送参数错误的方式“#选择器”的参数引用了未向Objective-C公开的实例方法“changePassword(电子邮件:currentPassword:newPassword:completion:)” 我不明白,您是否尝试,objective-c,arguments,selector,Objective C,Arguments,Selector,选择器如何发送参数 选择器发送参数错误的方式“#选择器”的参数引用了未向Objective-C公开的实例方法“changePassword(电子邮件:currentPassword:newPassword:completion:)” 我不明白,您是否尝试过用@objc属性标记函数,以便@objc func更改密码(电子邮件:u,当前密码:u,新密码:u,完成:u)@objc属性将函数公开给Obj-C运行时。您不能使用addTarget()发送参数。在触碰内部时,将调用它。而是读取UITextF

选择器如何发送参数
选择器发送参数错误的方式“#选择器”的参数引用了未向Objective-C公开的实例方法“changePassword(电子邮件:currentPassword:newPassword:completion:)”
我不明白,您是否尝试过用@objc属性标记函数,以便
@objc func更改密码(电子邮件:u,当前密码:u,新密码:u,完成:u)
@objc属性将函数公开给Obj-C运行时。您不能使用
addTarget()
发送参数。在
触碰内部
时,将调用它。而是读取
UITextField
(我猜)的值。信息不够,但可能重复
        confirmBtn.addTarget(self, action: #selector(changePassword(email:currentPassword:newPassword:completion:)), for: .touchUpInside)
}



func changePassword(email: String, currentPassword: String, newPassword: String, completion: @escaping (Error?) -> Void) {
        let credential = EmailAuthProvider.credential(withEmail: email, password: currentPassword)
        Auth.auth().currentUser?.reauthenticate(with: credential, completion: { (result, error) in
            if let error = error {
                completion(error)
            }
            else {
                Auth.auth().currentUser?.updatePassword(to: newPassword, completion: { (error) in
                    completion(error)
                })
            }
        })
    }