2012-08-14 1 views
2

Si je crée des styles en ligne, ils sont rendus, mais lorsqu'ils essayent de référencer un fichier css dans le même groupe et le même répertoire dans xCode, ils ne sont pas rendus.ios - impossible d'obtenir les styles de fichier css en HTML à partir d'un UIWebView

Voici ce que je fais:

<html> 
<head> 
    <link href="main.css" rel="stylesheet" type="text/css" /> 
</head> 

<body> 

    <h1>Hello, world! Learn</h1> 

    <p> 
    <a href="myscheme://advertising" class="buttonStyle">Click me!</a> 
    </p> 
</body> 
</html> 

et j'ai le fichier appelé css main.css comme ceci:

body {background-color:#b0c4de;} 
p {background-color:#e0ffff;} 

Est-ce que quelqu'un sait pourquoi ce ne serait pas rendre le css? Est-ce qu'il me manque quelque chose d'important dans l'en-tête HTML?

Voici comment j'appelle le code HTML en premier lieu:

- (void)viewDidAppear:(BOOL)animated 
{ 
    NSString *htmlFile = [[NSBundle mainBundle] pathForResource:@"learn" 
                 ofType:@"html"]; 

    NSString* htmlString = [NSString stringWithContentsOfFile:htmlFile encoding:NSUTF8StringEncoding error:nil]; 
    [theWebView loadHTMLString:htmlString baseURL:nil]; 

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:htmlFile]]; 

    [theWebView loadRequest:request]; 
} 

Répondre

8

Le problème est dans

[theWebView loadHTMLString:htmlString baseURL:nil]; 

Depuis baseURL est nul, l'affichage Web n'a aucun moyen de déterminer où votre css le fichier est. Au lieu de jouer avec la création manuelle des données et le chargement, passez le chemin du fichier HTML directement à l'UIWebView:

NSString *htmlFile = [[NSBundle mainBundle] pathForResource:@"learn" ofType:@"html"]; 
NSURL *url = [NSURL fileURLWithPath:htmlFile]; 
NSURLRequest *rq = [NSURLRequest requestWithURL:url]; 
[webView loadRequest:rq]; 
+0

fonctionne - très agréable !! – GeekedOut

+0

Merci ... C'est un WOW. Mais mon cas est un peu différent. Mes fichiers css sont dans le dossier css. Et j'y accède sous le nom de css/style.css. Dans ce cas, il n'accède toujours pas au CSS. Considérant que si je mets le css hors du dossier et l'accès comme style.css seulement son fonctionnement. Peux-tu m'aider. La raison pour laquelle je dois mettre dans le dossier respectif est parce que pour éviter de futurs dégâts. S'il vous plaît aider. – Debopam

+0

Est-il nécessaire d'avoir tous les fichiers css, html, js dans un dossier ou peuvent-ils être divisés en différents dossiers? – Satyam

Questions connexes