Я создал простой проект Swift, чтобы попытаться обернуть голову делегатами и протоколами.Цель состоит в том, чтобы передавать данные между двумя классами (SendingClass
& ReceivingClass
).Две кнопки в SendingClass
связаны с делегатом, который должен запускать соответствующую функцию протокола в ReceivingClass для выполнения.К сожалению, это не работает, я подозреваю, что это связано с тем, где и как я объявляю ReceivingClass
в качестве делегата.
Цените ваши идеи, я только начинаю!
Я пытался установить делегата в разных местах (в настоящее время в viewDidLoad
, но не могу заставить его работать).
let vc = SendingClass()
vc.statusDelegate = self
SendingClass.swift
import UIKit
protocol StatusDelegate {
func statusChanged(state: Bool, sender: String)
}
class SendingClass: UIViewController {
var statusDelegate : StatusDelegate?
@IBAction func button1Pressed(_ sender: UIButton) {
statusDelegate?.statusChanged(state: true, sender: "Button 1")
}
@IBAction func button2Pressed(_ sender: UIButton) {
statusDelegate?.statusChanged(state: false, sender: "Button 2")
}
}
ReceivingClass.swift
import Foundation
import UIKit
class ReceivingClass: UIViewController, StatusDelegate {
override func viewDidLoad() {
let vc = SendingClass()
vc.statusDelegate = self
}
func statusChanged(state: Bool, sender: String) {
print("Sender = \(sender) , State = \(state)")
}
}
Ожидается: функция согласования протокола ReceivingClass
(func statusChanged
) должна выполняться каждый разкнопки нажимаются в SendingClass.
Фактически: Ничего не происходит