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