Ho trovato alcuni post per questo problema ma nessuno di loro ha risolto il mio problema.Aggiunta di un controller di visualizzazione come subview in un altro controller di vista
Dire, come ho ..
- ViewControllerA
- ViewControllerB
Ho provato ad aggiungere ViewControllerB come una visualizzazione secondaria in ViewControllerA Ma, è gettando un errore come "fatal error: unexpectedly found nil while unwrapping an Optional value
".
seguito è il codice ...
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 è solo un semplice schermo con un'etichetta in esso.
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"
}
EDIT
Con la soluzione suggerita dalle risposte degli utenti, ViewControllerB in ViewControllerA sta fuori dallo schermo. Il bordo grigio è il frame che ho creato per la sottoview.
Grazie per la spiegazione dettagliata. Quando ho provato ad aggiungere 'ViewControllerB' a' ViewControllerA', 'ViewControllerB' sta uscendo dallo schermo. Ho modificato il mio post con lo screenshot del simulatore. –
Questo è possibile. Ecco perché, nel mio esempio, ho impostato il 'frame' manualmente. Oppure, se si disattiva 'translatesFrameIntoConstraints' (o come si chiama), è possibile aggiungere anche i vincoli a livello di programmazione. Ma se stai aggiungendo la sottoview, sei responsabile dell'impostazione del frame, in un modo o nell'altro, proprio come lo sei per tutte le visualizzazioni secondarie aggiunte a livello di codice. – Rob
Ecco come è possibile aggiungere dei limiti 'controller.view.frame = UIScreen.mainScreen(). Bounds' –