Swift / iOS: IBOutlet nulo após carregar o controlador de exibição

Estou construindo um aplicativo (no XCode 8.2.1) em que alguns objetos são exibidos em uma placa 2D e, quando o usuário toca em um desses objetos, algumas informações devem ser exibidas sobre ele como uma caixa de informações modal estilizada. Meu projeto é ter as informações gravadas em um controlador de exibição separado, que eu exibiria quando necessário.

Projetei um esboço básico para o segundo controlador de exibição e adicionei um único rótulo ao construtor de interface. Em seguida, vinculei este rótulo à minha classe de VC personalizada com a tecla Ctrl:

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

No entanto, quando testo meu aplicativo e toco no objeto, oinfo campo énil mesmo noviewDidLoad() método da minha classe VC personalizada. A maneira como estou exibindo meu VC é a seguinte:

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

(Nota: no final, terei apenas uma única instância deInfoViewController mas isso é apenas para teste. Não espero que uma instância global faça alguma diferença?)

Como eu disse, seja dentro doviewDidLoad() método ou nodisplayInfo() método,info é semprenil, de modo que definir suaattributedString atributo trava o aplicativo. Pensando opresent método pode ser chamado de forma assíncrona, tentei chamardisplayInfo() de dentroviewDidLoad(), mas isso não fez nenhuma diferença.

Alguém pode me dizer o que eu esqueci que permitiria que meuIBOutlet de ser corretamente inicializado corretamente?

Obrigado!

David

questionAnswers(3)

yourAnswerToTheQuestion