Swift / iOS: IBOutlet nil después de cargar el controlador de vista

Estoy creando una aplicación (en XCode 8.2.1) donde algunos objetos se muestran en una placa 2D, y cuando el usuario toca uno de estos objetos, se debe mostrar cierta información sobre él como un cuadro de información modal con estilo. Mi diseño es tener la información escrita en un controlador de vista separado, que mostraría cuando sea necesario.

Diseñé un código auxiliar básico para el segundo controlador de vista y le agregué una sola etiqueta en el generador de interfaces. Luego he vinculado ctrl esta etiqueta a mi clase de VC personalizada:

class InfoViewController: UIViewController {
    @IBOutlet weak var info: UILabel!
    override func viewDidLoad() {
        super.viewDidLoad()
    }
    func displayInfo() {
        info.attributedText = NSAttributedString(string: "abc")
    }
}

Sin embargo, cuando pruebo mi aplicación y toco el objeto, elinfo el campo esnil incluso en elviewDidLoad() método de mi clase de VC personalizada. La forma en que estoy mostrando mi VC es la siguiente:

let infoViewController = InfoViewController()
infoViewController.modalPresentationStyle = .overCurrentContext
self.present(infoViewController, animated: true, completion: nil)
infoViewController.displayInfo()

(Nota: al final solo tendré una sola instancia deInfoViewController Pero esto es solo para probar. ¿No espero que una instancia global haga alguna diferencia?)

Como dije, ya sea dentro delviewDidLoad() método o en eldisplayInfo() método,info es siemprenil, de modo que establecer suattributedString El atributo bloquea la aplicación. Pensando en elpresent podría llamarse al método de forma asincrónica, he intentado llamardisplayInfo() desde el interiorviewDidLoad(), pero eso no hizo ninguna diferencia.

¿Alguien puede decirme lo que he olvidado que permitiría que miIBOutlet de ser correctamente inicializado correctamente?

¡Gracias!

David

Respuestas a la pregunta(3)

Su respuesta a la pregunta