Swift – Delegado que no llama método de otra class

Estoy intentando cambiar el text de una label en otro controller de vista cuando se presiona un button. A continuación, explicamos cómo configuro el delegado:

En FirstViewController bajo import UIKit

 @objc protocol MyDelegate{ optional func makeScore() } 

En FirstViewController en la class FirstViewController: UIViewController

 var delegate:MyDelegate? 

En FirstViewController cuando se presiona un button

 delegate?.makeScore!() 

En SecondViewController (donde se encuentra makeScore() )

 class SecondViewController: UIViewController, MyDelegate 

El método makeScore() en SecondViewController

 func makeScore() { println("worked") } 

No se registra nada cuando se presiona el button. Estoy bastante seguro de que configuro delegates y protocolos correctamente. ¿Ves que falta algo?

Nota: FirstViewController y SecondViewController no están conectados por segues. Ambos están en scrollView .

Puedo ver ahora que agregó el segundo controller de vista mediante progtwigción con estas líneas:

 let vc6 = storyboard.instantiateViewControllerWithIdentifier("Second") as! SecondViewController self.addChildViewController(vc6) self.scrollView.addSubview(vc6.view) 

Simplemente agregue una línea para que se lea así:

 let vc6 = storyboard.instantiateViewControllerWithIdentifier("Second") as! SecondViewController self.delegate = vc6 self.addChildViewController(vc6) self.scrollView.addSubview(vc6.view) 

Editar: en un nodo lateral, estoy seguro de que un delegado es en realidad el mejor enfoque para lo que intentas hacer. Probablemente sería mejor hacer una reference global a su SecondViewController , luego llamar a self.vc6.makeScore() . Los delegates se utilizan normalmente para volver a llamar a los objects que no están contenidos en el Controlador de vista