Swift 3:无法识别的选择器发送到实例
Swift 3: Unrecognized selector sent to instance
我的视图中有一个按钮 class 试图从单独的 class 添加选择器功能,如下所示:
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 调用函数?或者只是将功能放在同一个 class 中是正确的设计模式吗?
对于您的问题,请尝试更改如下代码:
class ProfileView: UIView {
createAccountButton.addTarget(ProfileViewController, action: #selector(ProfileViewController.createAccountClicked), for: .touchUpInside)
}
是否可以从单独的 class 调用函数?或者只是将功能放在同一个 class 中是正确的设计模式吗?
是的,你可以通过声明一个class函数或那个class的对象来从外部调用一个函数。检查下面的class函数
class ProfileViewController: UIViewController {
class func someTypeMethod() {
//body
}
}
我的视图中有一个按钮 class 试图从单独的 class 添加选择器功能,如下所示:
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 调用函数?或者只是将功能放在同一个 class 中是正确的设计模式吗?
对于您的问题,请尝试更改如下代码:
class ProfileView: UIView {
createAccountButton.addTarget(ProfileViewController, action: #selector(ProfileViewController.createAccountClicked), for: .touchUpInside)
}
是否可以从单独的 class 调用函数?或者只是将功能放在同一个 class 中是正确的设计模式吗?
是的,你可以通过声明一个class函数或那个class的对象来从外部调用一个函数。检查下面的class函数
class ProfileViewController: UIViewController {
class func someTypeMethod() {
//body
}
}