Я выполнил весь необходимый код для работы делегата. В моем ViewController: class ViewController: UIViewControllerCustomViewDelegate
У меня есть это:Swift Делегат не называется
override func viewDidLoad() {
super.viewDidLoad()
let myCustomView = Bundle.main.loadNibNamed("ImageHeaderView", owner: self, options: nil)?[0] as! ImageHeaderView
myCustomView.delegate = self
}
func goToNextScene() {
print("GOTOSCENE2")
}
И в моей настраиваемое представление у меня есть это:
import UIKit
protocol CustomViewDelegate: class { // make this class protocol so you can create `weak` reference
func goToNextScene()
}
@available(iOS 10.0, *)
class ImageHeaderView : UIView {
@IBOutlet weak var followme: UISwitch!
@IBOutlet weak var profileImage : UIImageView!
@IBOutlet weak var backgroundImage : UIImageView!
weak var delegate: CustomViewDelegate?
override func awakeFromNib() {
super.awakeFromNib()
self.backgroundColor = UIColor(hex: "E0E0E0")
self.profileImage.layer.cornerRadius = self.profileImage.frame.size.height/2
self.profileImage.clipsToBounds = true
self.profileImage.layer.borderWidth = 1
self.profileImage.layer.borderColor = UIColor.white.cgColor
//self.profileImage.setRandomDownloadImage(80, height: 80)
//self.backgroundImage.setRandomDownloadImage(Int(self.frame.size.width), height: 100)
}
@IBAction func followme(_ sender: AnyObject) {
UserDefaults.standard.set(followme.isOn, forKey: "followme")
}
@IBAction func logout(_ sender: AnyObject) {
delegate?.goToNextScene()
print("GOTOSCENE")
}
}
Существует нет ошибок, брошенные, но когда я нажимаю/нажмите кнопку, Ничего не произошло. Он просто печатает «GOTOSCENE».
удаление слабых не решит проблему. слабый только защищает делегата от доступа после освобождения (т. е. делегат будет равен нулю, если делегат был освобожден) – giorashc
Не добавлено ли myCustomView в представление? Может быть, у вас более одного экземпляра? – tonik12
Я удалил класс и слабый. Все еще не работает. –