以下是我以编程方式使用委托示例.代码将消息从一个视图传递到另一个视图控制器.我有两个视图SendMessageController和Receive Message控制器.它正在传回数据的场景.
协议在SendMessageController中定义.
protocol SendMessageDelegate: AnyObject {
func message(text: String)
}
final class SendMessageController: UIViewController {
weak var delegate: SendMessageDelegate?
@objc func button() {
sendMessage()
}
func sendMessage() {
let message = “Hello World”
delegate?.message(text: message)
print("Delegate is :\(delegate)")
print("self:\(self)")
}
在显示接收消息的消息视图控制器中:
final class ShowMessageController: UIViewController,SendMessageDelegate {
let sendMessageController = SendMessageController()
override func viewDidLoad() {
sendMessageController.delegate = self
print("\(sendMessageController)")
}
func message(text: String) {
print(“The message is:\(text)”)
}
}
委托打印空,并且print(self)的内存地址不同于print("(sendMessageController)"). 我以前用过委托,SendVC的内存地址都是一样的,不知道这是怎么回事.