Supponendo che carico un controller di visualizzazione da un pennino e decido di fare qualcosa con una delle sue sottoview dietro la scena. In un secondo momento, mostrerò la vista di questo controller di visualizzazione.Crea una vista (inizializzata da initWithNibName) carica tutta la sua sottoview
viewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
[viewController.someSubview doSomething];
//later on
[mainView addSubview:viewController.view];
Il problema è che, l'oggetto someSubview non sembra essere caricato fino a visualizzare la vista, in modo che il metodo doSomething non viene chiamato. Finora la mia soluzione alternativa è chiamare:
[mainView addSubview:viewController.view];
[viewController.view removeFromSuperview];
per inizializzare prima le sottoview di viewcontroller. C'è un modo più elegante (come un metodo loadSubviews o qualcosa del genere) per questo compito?
Grazie, che ha fatto. – iamj4de
@MarkAmery Apple ti dice esplicitamente di non chiamare -loadView nella documentazione: "Non dovresti mai chiamare direttamente questo metodo.Il controller di visualizzazione chiama questo metodo quando la sua proprietà view è richiesta ma è attualmente nul. Questo metodo carica o crea una vista e lo assegna alla proprietà vista. " –
@MikeWeller Un buon punto: non avevo letto abbastanza attentamente la documentazione per saperlo. Suppongo che dobbiamo scegliere tra uno dei due hack leggermente brutti, quindi. Da parte mia, probabilmente userò 'loadView' solo perché è più esplicito, ma ammetto che non è la soluzione pulita che pensavo fosse. –