[英]delegate returns nil even after set to self
I have a ViewController that has a CollectionView of two cells. 我有一个ViewController具有两个单元格的CollectionView。 One of the cells (LoginView) has the login buttons, which I want the ViewController to handle.
其中一个单元格(LoginView)具有登录按钮,我希望ViewController处理该按钮。 The error I'm getting is an unexpected nil even though delegate is set to self in WelcomeViewController.
即使委托在WelcomeViewController中设置为self,我得到的错误也是意外的nil。
ViewController ViewController
class WelcomeViewController: UIViewController, SomeDelegate ... {
func createCollectionView(){
let loginView = LoginView()
loginView.delegate = self
//collectionView related stuff here
...
}
...
override func viewDidLoad() {
super.viewDidLoad()
createLayer()
createCollectionView()
}
...
func didPressFacebook() {
print("pressed")
}
}
Protocol looks something like this 协议看起来像这样
protocol SomeDelegate {
func didPressFacebook()
}
and the view is something like this 而视图是这样的
class LoginView: UICollectionViewCell, ConfigurableCell {
var reuseId: String {
get {
return "loginView"
}
}
var delegate : LoginButtonHandlerDelegate!
//Create other view related stuff here
...
let facebookButton = SocialButton(buttonType: .facebook)
let googleButton = SocialButton(buttonType: .google)
override init(frame: CGRect) {
super.init(frame: frame)
facebookButton.addTarget(self, action: #selector(didPressLogin), for: .touchUpInside)
//Add subviews and other relatedstuff here
...
}
...
@objc func didPressLogin(){
if (facebookButton.buttonIs == "facebook") {
delegate.didPressFacebook()
}
}
}
from the code I see: var delegate : LoginButtonHandlerDelegate!
从代码中我看到:
var delegate : LoginButtonHandlerDelegate!
should be var delegate : SomeDelegate!
应该是
var delegate : SomeDelegate!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.