Delegate using Container View in Swift

Like @nwales said you haven't yet set the delegate. You should do set the delegate in prepareForSegue function on your first viewController (who contain the viewContainer)

First select the embed segue and set an identifier in the attributes inspector. Then in the parentViewController implement the func prepareForSegue like this:

Swift 4+:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if (segue.identifier == "the identifier") {
            let embedVC = segue.destination as! ViewController
            embedVC.delegate = self
        }
    }

Below:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    // Get the new view controller using segue.destinationViewController.
    // Pass the selected object to the new view controller.
    if (segue.identifier == "the identifier") {
        let embedVC = segue.destinationViewController as! ContainerViewController
        embedVC.dataViewDelegate = self
    }
}

Looks like you defined the delegate, but have not set the delegate. This happens to me all the time.