I've read Trying to understand protocol/delegates in Swift, Passing data back from view controllers Xcode, and Pass data when dismiss modal viewController in swift in an attempt to pass some data back and forth. I think I did exactly what the posts described yet, the data is not being passed. I'm missing something and I have no idea what. If you could point out what that is, that would be so awesome. Thank you in advance :)
I should also mentioned that I presented the TaskMessageViewController
using a modal segue. And I want to send data back to my TaskListViewController
. I am currently using unwindToSegue
to go back to the TaskListViewController
.
In my Protocols.swift
file, I have the following code:
import Foundation
protocol ReceiveMessageDelegate {
func receiveMessageFromTaskMessageViewController (message: String)
}
And in my inheritance declarations, I have:
class TaskListViewController: UIViewController, ReceiveMessageDelegate
And in my TaskListViewController.swift
, I wrote:
override func viewDidLoad() {
super.viewDidLoad()
let taskMessageViewController = TaskMessageViewController()
taskMessageViewController.delegate = self
}
func receiveMessageFromTaskMessageViewController (message: String) {
print(message)
print("Protocol works!")
}
And in my TaskMessageViewController.swift
, I wrote:
var delegate: ReceiveMessageDelegate?
@IBAction func doneButtonTapped(sender: AnyObject) {
self.delegate?.receiveMessageFromTaskMessageViewController("message from message View Controller")
}
When I press the done
button on the simulator, the doneButtonTapped
gets executed. However, print("Protocol Works")
never gets executed. Anybody have any suggestions?