J'ai également eu du mal à le faire.
J'essayais de charger un fichier HTML à partir d'un serveur et de changer le style en utilisant un fichier CSS local.
Au début, je
[webView loadRequest:reqObj];
Et quand il a frappé - (void)webViewDidFinishLoad:(UIWebView *)webView
je tente de pousser le fichier CSS comme un enfant à la 'tête':
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
NSString *path = [[NSBundle mainBundle] bundlePath];
NSString *cssPath = [path stringByAppendingPathComponent:@"style.css"];
NSString *js = [NSString stringWithFormat:@"var cssChild = document.createElement('link');"
"cssChild = 'text/css';"
"cssChild = 'stylesheet';"
"cssChild = '%@';", cssPath];
js = [NSString stringWithFormat:@"%@ document.getElementsByTagName('head')[0].appendChild(cssChild);", js];
[webView stringByEvaluatingJavaScriptFromString:js];
}
Alors ... il n » ai pas travail t ...
puis j'ai essayé
NSString *path = [[NSBundle mainBundle] bundlePath];
NSURL *baseURL = [NSURL fileURLWithPath:path];
[webView loadHTMLString:htmlString baseURL:baseURL];
(J'ai copié la chaîne HTML dans htmlString) puis, à l'intérieur - (void)webViewDidFinishLoad:(UIWebView *)webView
j'ai injecté le CSS comme dans le code ci-dessus. Et ça a marché!
Mais ... mon fichier HTML est stocké dans un serveur distant et je n'avais pas la chaîne HTML, donc j'utilisé
NSString* myFile = [NSString stringWithFormat:@"http://blablabla.com/file.html"];
NSString* myFileURLString = [myFile stringByReplacingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
NSData *myFileData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:myFileURLString]];
NSString* myFileHtml = [[[NSString alloc] initWithData:myFileData encoding:NSASCIIStringEncoding] autorelease];
Pour obtenir le code HTML. Maintenant, j'ai le texte HTML brut dans 'myFileHtml'. J'utilise maintenant
NSString *path = [[NSBundle mainBundle] bundlePath];
NSURL *baseURL = [NSURL fileURLWithPath:path];
[webView loadHTMLString:myFileHtml baseURL:baseURL];
et attraper la réponse dans « webViewDidFinishLoad », injectant mon fichier CSS dans et cela a fonctionné :)
Peut-être il y a une autre, plus élégante, la solution à ce problème, mais c'est ce que je suis venu avec ...
Espérons que cela a aidé.
Merci! Cela a fonctionné. Je viens d'ajouter '[myFileData release];' – Gal