ios – Delegate is nil when passing data back to VC


Here’s my example usage of delegate programmatically. The code passes a message from one view to other view controller. I have two view SendMessageController and Receive message controller. It’s passing data back scenario.

Protocol is defined in 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)")   
} 

In Show Message View Controller which receives message:

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)”)
             
    }       
}
  

The delegates prints nil, and memory address of print(self) is different than print(“(sendMessageController)”).
I had use delegate before where memory adress of SendVC were same, don’t know what is happening here.

Latest articles

spot_imgspot_img

Related articles

Leave a reply

Please enter your comment!
Please enter your name here

spot_imgspot_img