Tengo un controlador de vista que se crea a través de initWithNibName, y descubrí que awakeFromNib no se llama. ¿Se llama a awakeFromNib solo cuando el controlador de vista se desarchiva del Nib? (es decir, se llama a initWithCoder)awakeFromNib no se llama en mi ViewController
Respuesta
UIViewController carga su vista perezosamente, solo cuando es necesario para la visualización. Esto sirve tanto para crear de forma programática la vista utilizando -loadView o unarchiving desde un plumín.
Puede hacer que la vista se cargue haciendo referencia a la propiedad de vista de UIViewController.
Creo que lo que estás buscando es viewDidLoad
. awakeFromNib
solo se invoca en los objetos que se cargan desde el plumín. El controlador en sí recibe viewDidLoad:
. ¡Ya que está llamando al initWithNibName:bundle:
, en realidad no se ha extraído del anzuelo!
Soy consciente del hecho de que se llamará a viewDidLoad, pero no estaba seguro de por qué awakeFromNib no lo estaba, porque el controlador de vista es un propietario de archivo de NIB, por lo que se desarchivará y se conectarán IBOutlet e IBAction, o así que pensé. – Boon
El propietario del archivo es un proxy para UIViewController, no una instancia real. Presumiblemente, el controlador de vista se crea una instancia fuera del alcance de la NIB y luego se "conecta" según las relaciones especificadas en el objeto proxy: el propietario del archivo. – teabot
awakeFromNib no se llama para objetos de marcador de posición como Propietario de archivo y Primer Respondedor en iOS. Ver # 4 en el Object Loading Process Docs
- 1. dismissViewControllerAnimated se llama pero ViewController no se descarta
- 2. mouseMoved no se llama
- 3. Popping ViewController no llama a viewWillAppear cuando retrocede
- 4. textFieldShouldReturn no se llama
- 5. loadView de UIViewController no se llama
- 6. NSTextField becomeFirstResponder no funciona en awakeFromNib
- 7. IBOutlet no está conectado en awakeFromNib
- 8. UIViewController & UIview dealloc no se llama
- 9. viewDidLoad se llama, viewWillAppear no quede llama, vista no aparece en la pantalla
- 10. NSLayoutConstraint se estrella ViewController
- 11. didReceiveRemoteNotification no se llama
- 12. onPostExecute no se llama
- 13. ViewForAnnotation no se llama
- 14. accesorioButtonTappedForRowWithIndexPath: no se llama.
- 15. didReceiveAuthenticationChallenge no se llama
- 16. fbDidLogin no se llama
- 17. ¿Por qué no se llama a mi delegado de CLLocationmanager?
- 18. ¿Por qué no se llama mi callback jQuery.get()?
- 19. ¿Por qué no se llama mi manejador de señal?
- 20. View.onMeasure() no se llama
- 21. ¿Por qué no se llama mi filtro de acción?
- 22. Android: ¿por qué mi OnKeyListener() no se llama?
- 23. ¿Por qué before_save no se llama para mi modelo ActiveRecord?
- 24. forwardInvocation no se llama?
- 25. onServiceConnected() no se llama
- 26. ¿Por qué mi sobrecargado constructor de C++ no se llama?
- 27. onPageScrolled() no se llama
- 28. ViewController init?
- 29. ¿Por qué mi destructor nunca se llama?
- 30. viewDidLoad y awakeFromNib timing
Gracias por el consejo de "referencia de la propiedad de la vista", eso era exactamente lo que estaba buscando. – Cyrille