Ho un controller di visualizzazione che viene creato tramite initWithNibName, e ho appena scoperto sveglioNon non è chiamato. WakeFromNib è chiamato solo quando il controller della vista non è archiviato dal pennino? (ovvero, initWithCoder viene chiamato)awakeFromNib non viene chiamato nel mio ViewController
risposta
UIViewController carica la sua vista pigramente, solo quando è necessario per la visualizzazione. Ciò vale sia per la creazione della vista a livello di codice utilizzando -loadView o unarchiving da un pennino.
È possibile caricare la vista facendo riferimento alla proprietà della vista di UIViewController.
Penso che quello che stai cercando è viewDidLoad
. awakeFromNib
viene richiamato solo sugli oggetti caricati dal pennino. Il controller stesso riceve viewDidLoad:
. Dato che chiami initWithNibName:bundle:
, in realtà non è stato archiviato dal pennino!
Sono consapevole del fatto che viewDidLoad verrà chiamato, ma non ero sicuro del perché awakeFromNib non lo fosse, perché il controller di visualizzazione è un proprietario di file del NIB, quindi verrà archiviato e IBOutlet e IBAction collegati, oppure così ho pensato. – Boon
Il proprietario del file è un proxy per UIViewController, non un'istanza reale. Presumibilmente il controller di visualizzazione viene istanziato al di fuori dell'ambito del NIB e quindi "cablato" in base alle relazioni specificate sull'oggetto proxy, il proprietario del file. – teabot
awakeFromNib non viene chiamato per oggetti segnaposto come Proprietario file e Primo risponditore in iOS. Vedi n. 4 nel Object Loading Process Docs
- 1. metodo awakeFromNib chiamato più volte
- 2. dismissViewControllerAnimated viene chiamato ma ViewController non è stato rimosso
- 3. perché il mio onPrepareOptionsMenu non viene chiamato?
- 4. iPhone - quando viene chiamato dealloc per un viewcontroller?
- 5. non willRotateToInterfaceOrientation essere chiamato dalla presentato viewcontroller
- 6. didReceiveAuthenticationChallenge non viene chiamato
- 7. onPostExecute non viene chiamato
- 8. Perché non viene visualizzato .lesshst nel mio ~
- 9. handleWatchKitExtensionRequest non viene chiamato
- 10. onPageScrolled() non viene chiamato
- 11. Perché il mio gestore di segnale non viene chiamato?
- 12. AppDomain.CurrentDomain.UnhandledException non viene chiamato
- 13. CssRewriteUrlTransform non viene chiamato
- 14. OnBackPressed non viene chiamato?
- 15. didSelectRowAtIndexPath: non viene chiamato
- 16. forwardInvocation non viene chiamato?
- 17. BackUpAgentHelperClass non viene chiamato
- 18. textFieldShouldBeginEditing non viene chiamato
- 19. Firebase onTokenRefresh() non viene chiamato
- 20. Perché il mio filtro azione non viene chiamato?
- 21. Perché il mio costruttore di C++ sovraccarico non viene chiamato?
- 22. Android: perché il mio OnKeyListener() non viene chiamato?
- 23. Perché il mio evento Grid Tapped non viene chiamato?
- 24. initWithNibName non viene chiamato
- 25. IBAction non viene chiamato
- 26. QWidget :: heightForWidth() non viene chiamato
- 27. Perché non viene chiamato onBackPressed()?
- 28. gotFocus e immettere metodi nel campo Modulo non viene chiamato
- 29. iOS - viewController Il metodo dealloc non viene chiamato dopo il popping alla vista precedenteController
- 30. Perché non è presentationController: viewControllerForAdaptivePresentationStyle: viene chiamato?
Grazie per il suggerimento "riferimento alla proprietà vista", era esattamente quello che stavo cercando. – Cyrille