2010-06-04 4 views
6

J'ai un nombre défini de ViewControllers dans mon application. Ils sont alloués et initialisés au lancement de l'application et libérés à la sortie. Ils sont utilisés par un NavigationController pour être poussés/déplacés. Dans ces ViewControllers il y a des WebViews (en fait il n'y a rien d'autre).Chargement du contenu d'un UIWebView avant de l'afficher

Mon problème est le suivant: Lorsque je veux modifier le contenu (URL) d'un WebView qui n'est pas sur le TopViewController en cours, le contenu n'est pas chargé jusqu'à ce que j'appuie sur le ViewController associé.

Et la transition nous "moche". Le Viewcontroller poussé/sorti montre au mieux l'ancien contenu au pire ou la page blanche, avant que le ViewController ne soit en pleine vue ALORS le nouveau contenu est affiché.

J'ai essayé beaucoup de choses (même en mettant le "loadRequest" dans un fil différent avec l'air stupide).

Savez-vous comment faire pour que tout se passe bien?

+0

Bonne question. Je charge aussi les fichiers HTML stockés localement dans mon application. Je vois un éclair blanc pendant l'animation de gauche à droite du contrôleur de navigation avec un moment avant que le contenu HTML rendu n'apparaisse. Et le contenu HTML simple pour démarrer. Les affichages successifs sont beaucoup plus rapides. –

Répondre

0

En général, vous devez planifier votre interface utilisateur pour les charges UIWebView lentes, car vous ne pouvez pas planifier à l'avance pour savoir combien de temps cela prendra. Ce que je fais souvent est d'avoir un UIView qui a un spinner et un message tel que "Chargement ..." qui est superposé au dessus de l'UIWebView. Voici comment je l'utilise:

Dans viewWillAppear: J'ouvre la vue de chargement et démarre le spinner.

Dans webViewDidFinishLoad Je cache la vue de chargement.

Si webViewDidFail est appelé, vous n'affichez pas de contenu temporaire ou non valide pendant le chargement de la page. Vous pouvez présenter un UIAlertView dans ce cas.

Si vous êtes curieux, vous pouvez le voir dans la page haut score de mon jeu (Lexitect, gratuit)

+2

Le temps de chargement n'est pas trop long car les URL que je charge sont des fichiers locaux. Ce que je voudrais, c'est vraiment pouvoir précharger les données, car, d'après mon expérience personnelle, il ne se charge jamais tant que le WebView n'est pas affiché à l'écran, même si je fais et répète la requête, si je demande un rechargement ou un rafraîchissement, ou un redessin de la vue. Le chargement est toujours retardé, et c'est le cœur du problème que j'essaie de résoudre. – Cons

Questions connexes