Diferiendo viewWillAppear hasta webViewDidFinishLoad

Tengo una aplicación que usaUIWebViews en varios controladores de vista. LosUIWebViews se utilizan para representar html generado localmente, no se requiere un acceso lento a la red.

Para ahorrar memoria, solo cargo estos a pedido según lo solicite viewcontrollerviewWillAppear llamar de vuelta. (Y descargue instancias fuera de pantalla en respuesta adidReceiveMemoryWarning mensajes.)

El problema es que el usuario puede ver el html renderizado, a veces acompañado de destellos de estilo y otros artefactos desagradables variados. Prefiero que el renderizado se realice fuera de la pantalla y revele la vista totalmente renderizada cuando esté listo.

ería muy ordenado poder tener elviewWillAppear no volverá hasta que UIWebView se haya procesado completamente. ¿Pero cómo

Le digo a laUIWebView qué representar enviándole unloadHTMLString:baseURL: mensaje. Esto es asíncrono, y en algún momento (pronto) más tarde, se vuelve a llamar al delegado de la vista webwebViewDidFinishLoad.

Experimenté con ejecutar un runloop dentro deviewWillAppear, ejecutando elNSDefaultRunLoopMode oUITrackingRunLoopMode. Esto funciona en el simulador (se queja al log

[CATransaction sincronizar] llamado dentro de la transacción

but funciona) pero en un dispositivo se bloquea, conwebViewDidFinishLoad nunca se llama.

(Además, parece que laUIWebView cargando propiedad no funciona. Al menos, después de llamar aloadHTMLString:baseURL: y antes de recibir la devolución de llamada no es cierto.)

Respuestas a la pregunta(4)

Su respuesta a la pregunta