У меня есть ViewController, который имеет CollectionView из двух ячеек. Одна из ячеек (LoginView) имеет кнопки входа в систему, которые я хочу, чтобы ViewController обрабатывал.
Ошибка, которую я получаю, является неожиданным нулем, даже если для делегата установлено значение self в WelcomeViewController.
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 SomeDelegate {
func didPressFacebook()
}
и вид выглядит примерно так
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()
}
}
}