UIWebView динамический HTML-шаблон - PullRequest
3 голосов
/ 12 марта 2012

Привет! Я хочу создать (внутренний или внешний) шаблон HTML для данных, которые я получаю из запроса XML.Это код, который у меня есть, и пока он работает нормально:

    NSString* desc = [screenData.jsonVars objectForKey:@"descriptionTXT"];
    NSString* title = [screenData.jsonVars objectForKey:@"titleTXT"];
    NSString* day = [screenData.jsonVars objectForKey:@"dayTXT"];
    NSString* month = [screenData.jsonVars objectForKey:@"monthTXT"];
    NSString* url = [screenData.jsonVars objectForKey:@"dataURL"];
    NSString* htmlContentString = [NSString stringWithFormat:
                                   @"<html>"
                                   "<style type=\"text/css\">"
                                   "body { background-color:transparent; font-family:Marker Felt; font-size:44;color:#fff;}"
                                   "</style>"
                                   "<body>"
                                   "<p style=\"text-align:center;font-size:65px;\">%@</p>"
                                   "<div style=\"color:#ff9900;margin:5px;padding:10px;\">%@ &nbsp;%@</div>"
                                   "<div style=\"color:#000;background:#DBDBDB;margin:5px;padding:10px;\">%@</div>"
                                   "<div style=\"color:#000;background:#ff9900;margin:5px;padding:10px;\"><a href=\"%@\">Go to website</a></div>"
                                   "</body></html>", title, day, month, desc, url];
    [BT_debugger showIt:self:[NSString stringWithFormat:@"This is the HTML: %@", htmlContentString]];
    [self.webView loadHTMLString:htmlContentString baseURL:nil];

    [self.view addSubview:webView];

Теперь я хочу извлечь html и прочитать его из внешнего или внутреннего файла.Например, в template1.html

Как вы можете видеть, что он динамический (это данные), и я хочу сохранить его таким.* Д.

Ответы [ 3 ]

6 голосов
/ 05 апреля 2014

Ответ, который использует +stringByReplacingOccurencesOfString: с NSMutableString, должен использовать вместо -replaceOccurrencesOfString:.Кроме того, NSBundle -pathForResource: возвращает путь, а не фактическое содержимое файла.Вот пример, который работает:

Шаблон

<!-- template.html -->
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <style type="text/css">
            body{
                font-family:"Helvetica Neue UltraLight",helvetica,verdana;
                margin-left:0;
                margin-right:0;
            }
            section{
                padding-left:5px;
                padding-right:5px;
                font-size:12px;
            }
            h1{
                font-size: 16px;
                padding-left:5px;
            }
            img{
                display: block;
                 /* 4:3 dimensions */
                width: 220px;
                height:165px;
            }
        </style>
    </head>
    <body>
       <h1>[[[name]]]</h1>
       <img src="[[[image]]]" alt="" />
       <section>
            <p>[[[full_description]]]</p>
       </section>
    </body>
</html>

Код

// load the template
NSString *path = [[NSBundle mainBundle] pathForResource:@"template" ofType:@"html"];
NSString *template = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
NSMutableString *html = [NSMutableString stringWithString:template];

// make substitutions
[html replaceOccurrencesOfString:@"[[[name]]]" withString:self.building.name options:NSLiteralSearch range:NSMakeRange(0, html.length)];
[html replaceOccurrencesOfString:@"[[[image]]]" withString:self.building.image options:NSLiteralSearch range:NSMakeRange(0, html.length)];
[html replaceOccurrencesOfString:@"[[[full_description]]]" withString:self.building.fulldescription options:NSLiteralSearch range:NSMakeRange(0, html.length)];

// load html string into webView
[self.webview loadHTMLString:html baseURL:nil];
1 голос
/ 06 декабря 2012

template.html

<html>
<head>
</head>
<body>
<div>[[[desc]]]</div>
<div>[[[title]]]</div>
<div>[[[day]]]</div>
</body>
</html>

Код

NSString *desc = @"descriptionText";
NSString *title = @"titleText";
NSString *day = @"dayText";
NSString *templateString = [[NSBundle mainBundle] pathForResource:@"template" ofType:@"html"];
NSMutableString *htmlContentString = [[NSMutableString alloc] initWithString:templateString];
[htmlContentString stringByReplacingOccurrencesOfString:@"[[[desc]]]" withString:desc];
[htmlContentString stringByReplacingOccurrencesOfString:@"[[[title]]]" withString:title];
[htmlContentString stringByReplacingOccurrencesOfString:@"[[[day]]]" withString:day];
[self.webView loadHTMLString:htmlContentString baseURL:nil];
[htmlContentString release];
[self.view addSubview:webView];
1 голос
/ 12 марта 2012
//set local path for file
NSString *filePath = [NSString stringWithFormat:@"%@/%@",
    [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0],
    @"myTemplate.html"];

//convert htmlContentString to raw data
NSData *data = [htmlContentString dataUsingEncoding:NSUTF8StringEncoding];

//write data to file
[data writeToFile:filePath atomically:YES];

//display file in webview
[myWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString: filePath]]];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...