2009-03-10 6 views
1

Je travaille sur une application qui utilise un UIWebView pour afficher ses fichiers d'aide. Le webView vit dans son propre point de vue, DocViewController ... quand elle est appelée la méthodeiPhone SDK: UIWebView

- (void)viewDidLoad { 

utilise

[webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath: [[NSBundle mainBundle] pathForResource:docPage ofType:@"html"]isDirectory:NO]]]; 

pour charger la page doc appropriée. Cependant, une fois la première page chargée, la vue devient statique et les nouvelles pages ne sont pas chargées lorsque le fichier docPage change et que la vue est basculée. Y a-t-il un moyen d'effacer le webView afin que les nouvelles pages se chargent quand on le demande?

Éditer:
La première réponse est confuse pour moi. Comme c'est la routine ci-dessous fonctionne. C'est juste que cela ne fonctionne que une fois. Une fois la vue chargée, la première fois, elle ne change pas lorsque cette vue est à nouveau activée et que la page html demandée est différente. La vue affiche toujours la première page html demandée et ne chargera pas de nouvelles demandes.

- (void)viewDidLoad { 

    docPage = [NSString stringWithFormat: @"%d", hexpage]; 

    [webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[NSBundle mainBundle] pathForResource:docPage ofType:@"html"]isDirectory:NO]]]; 

} 
+0

Chargez-vous les nouvelles demandes par programme ou proviennent-elles d'une interaction dans la vue Web, c'est-à-dire en tapant sur des liens hypertexte. Si c'est le dernier, il y a peut-être un problème avec vos chemins, donc l'utilisation de baseURL pour indiquer à la webview où est votre racine web – nduplessis

+0

Aucune interaction, tout est programmé. Merci pour le commentaire! – Alan

Répondre

3

viewDidLoad n'est appelée qu'une seule fois, sauf si la vue est libérée et doit être rechargée. Cela se produit généralement uniquement lorsque le contrôleur de vue reçoit un avertissement de mémoire faible. Au lieu de viewDidLoad, essayez de mettre ce code dans viewWillAppear:, qui est appelé à chaque fois que la vue s'affiche à l'écran.

2

Essayez d'utiliser

- (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL 

le passage d'un objet NSURL au répertoire qui contient votre code HTML comme baseURL et le chargement de la chaîne HTML avec quelque chose comme

NSString *path = [[NSBundle mainBundle] pathForResource:@"myfile" 
               ofType:@"html"]; 
NSString *html = [NSString stringWithContentsOfFile:path 
              encoding:NSUTF8StringEncoding 
               error:nil]; 

Edit: Aussi, assurez- Assurez-vous que vos hyperliens n'essaient pas d'ouvrir dans une nouvelle fenêtre avec quelque chose comme target = "_ blank", votre webview n'ouvrira pas ces liens