возможно, я упускаю что-то действительно фундаментальное здесь, но после того, как я в течение часа или около того смотрю на код, мой мозг проходит циклы, и я был бы признателен за свежий взгляд на эту проблему.
У меня естьследующий UIView
:
import UIKit
protocol DetailViewWillShowUpDelegate {
func sendDetailOpened(_ openedBool: Bool)
}
class locationXIBController: UIView {
@IBOutlet weak var loationLabel: UILabel!
@IBOutlet weak var vsedniOteviraciDobaLabel: UILabel!
@IBOutlet weak var prijmajiKartyLabel: UILabel!
@IBOutlet weak var detailViewButtonOutlet: UIButton!
@IBOutlet weak var backgroundViewButton: UIButton!
let openedBool = true
var detailViewWillShowUpDelegate: DetailViewWillShowUpDelegate?
override func awakeFromNib() {
super.awakeFromNib()
}
@IBAction func vecerkaDetailButtonPressed(_ sender: UIButton) {
detailViewWillShowUpDelegate?.sendDetailOpened(openedBool)
print("pressed")
}
override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
if let result = detailViewButtonOutlet.hitTest(convert(point, to: detailViewButtonOutlet), with: event) {
return result
}
return backgroundViewButton.hitTest(convert(point, to: backgroundViewButton), with: event)
}
}
Теперь проблема в том, что когда я вызываю / нажимаю функцию vecerkaDetailButtonPressed
, я получаю «нажатие» на выход в консоли, но протокол по какой-то причине не проходит через,
Другая сторона выглядит следующим образом (для простоты):
class MapViewController: UIViewController, MKMapViewDelegate, CLLocationManagerDelegate {
let locationXIB = locationXIBController()
let isVecerkaDetailOpened = false
override func viewDidLoad() {
locationXIB.detailViewWillShowUpDelegate = self
}
extension MapViewController: DetailViewWillShowUpDelegate {
func sendDetailOpened(_ openedBool: Bool) {
isVecerkaDetailOpened = openedBool
print("success")
}
}
Я знаю, что значение протокола на момент выполнения равно нулю.Как я уже сказал, любая помощь приветствуется, спасибо!