斯威夫特3:无法识别的选择发送到实例

斯威夫特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)

代替。我的问题是 - 是否可以从一个单独的类中调用一个函数?或者只是让同一类中的函数成为正确的设计模式?

+0

将'addTarget'放在'self'处,您需要传递'ProfileViewController'的引用。 –

+0

'ProfileViewController.self'的作品! –

对于您的问题,尝试改变像下面的代码:

class ProfileView: UIView { 
    createAccountButton.addTarget(ProfileViewController, action: #selector(ProfileViewController.createAccountClicked), for: .touchUpInside) 
} 

是否有可能从一个单独的类调用一个函数?或者只是让同一类中的函数成为正确的设计模式?

,您可以通过声明一个类函数或该类的一个对象从外部调用函数。检查下面的类功能

class ProfileViewController: UIViewController { 
class func someTypeMethod() { 
    //body 
} 
}