He encontrado algunas publicaciones para este problema, pero ninguna resolvió mi problema.
Di como si ...
- ViewControllerA
- ViewControllerB
Intenté agregar ViewControllerB como una subvista en ViewControllerA pero arroja un error como " fatal error: unexpectedly found nil while unwrapping an Optional value
".
A continuación se muestra el código ...
ViewControllerA
var testVC: ViewControllerB = ViewControllerB();
override func viewDidLoad()
{
super.viewDidLoad()
self.testVC.view.frame = CGRectMake(0, 0, 350, 450);
self.view.addSubview(testVC.view);
// Do any additional setup after loading the view.
}
ViewControllerB es solo una pantalla simple con una etiqueta en ella.
ViewControllerB
@IBOutlet weak var test: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
test.text = "Success" // Throws ERROR here "fatal error: unexpectedly found nil while unwrapping an Optional value"
}
EDITAR
Con la solución sugerida de las respuestas del usuario, ViewControllerB en ViewControllerA está saliendo de la pantalla. El borde gris es el marco que he creado para la subvista.
fuente
ViewControllerB
aViewControllerA
,ViewControllerB
se apaga la pantalla. He editado mi publicación con la captura de pantalla del simulador.frame
manualmente. O si lo apagatranslatesFrameIntoConstraints
(o como se llame), y probablemente también pueda agregar restricciones mediante programación. Pero si está agregando la subvista, es responsable de configurar su marco, de una forma u otra, al igual que para todas las subvistas agregadas mediante programación.controller.view.frame = UIScreen.mainScreen().bounds
addSubview
, la vista raíz del controlador secundario es una subvista de la vista a la que lo agregó. Todo lo que debe hacer es agregar restricciones entre la vista raíz del controlador secundario y la vista a la que acaba de agregarlo como una subvista.