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
}
}