Forzar viewDidLoad para disparar en iOS
ios viewcontroller (4)
Tengo dos aplicaciones de Windows y mientras presento la primera ventana, me gustaría que la vista de la segunda ventana cargue y prepare el contenido para más adelante en segundo plano.
He intentado usar el método loadView
pero Apple dice que no debes llamar a este método directamente.
Hasta ahora, he optado por utilizar el método de la vista userInteractionEnabled
que en realidad llama implícitamente viewDidLoad
método viewDidLoad
.
¿Existe una forma elegante de forzar el método viewDidLoad
ViewControllers
para que se dispare antes de que sea natural (cuando la ventana es clave y se presenta)?
En iOS 9, Apple finalmente solucionó esto:
// Loads the view controller''s view if it has not already been set.
@available(iOS 9.0, *)
public func loadViewIfNeeded()
Puede crear una instancia global para ese controlador (puede estar en AppDelegate
) y llamar al método para el que desea realizar la acción. Luego, mientras presiona el controlador, no cree una nueva instancia Solo use la instancia que ha creado para uso global.
Puede simplemente llamar [viewController view];
.
La documentación para UIViewController explica cómo la propiedad de vista se carga de forma perezosa y se llama a viewDidLoad
después de que se carga la vista.
Swift 2.0 , con el mismo resultado de la solución de @Carl Veazey:
let viewController = MyCustomViewController()
_ = viewController.view