斯威夫特3:无法识别的选择发送到实例
问题描述:
我有我的视图类按钮尝试从一个单独的类增加一个选择器功能如下:斯威夫特3:无法识别的选择发送到实例
class ProfileView: UIView {
createAccountButton.addTarget(self, action: #selector(ProfileViewController.createAccountClicked), for: .touchUpInside)
}
class ProfileViewController: UIViewController {
func createAccountClicked() {
print("button press")
}
}
我得到一个无法识别的选择错误,当我试图在ProfileView
之外引用此方法。但是它工作时,我只是把createAccountClicked()
到ProfileView
,并呼吁:
createAccountButton.addTarget(self, action: #selector(self.createAccountClicked), for: .touchUpInside)
代替。我的问题是 - 是否可以从一个单独的类中调用一个函数?或者只是让同一类中的函数成为正确的设计模式?
答
对于您的问题,尝试改变像下面的代码:
class ProfileView: UIView {
createAccountButton.addTarget(ProfileViewController, action: #selector(ProfileViewController.createAccountClicked), for: .touchUpInside)
}
是否有可能从一个单独的类调用一个函数?或者只是让同一类中的函数成为正确的设计模式?
是,您可以通过声明一个类函数或该类的一个对象从外部调用函数。检查下面的类功能
class ProfileViewController: UIViewController {
class func someTypeMethod() {
//body
}
}
将'addTarget'放在'self'处,您需要传递'ProfileViewController'的引用。 –
'ProfileViewController.self'的作品! –