Как я могу загрузить локальный файл HTML в UIWebView? - PullRequest
25 голосов
/ 10 января 2011

Как мы можем загрузить наш собственный HTML-файл в UIWebView?

Ответы [ 7 ]

64 голосов
/ 10 января 2011

Следующий код загрузит файл HTML с именем index.html в папку вашего проекта:

[WebView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"]isDirectory:NO]]];
28 голосов
/ 10 января 2011

Коди Грей прав, но есть и такой способ:

// Load the html as a string from the file system
NSString *path = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"];
NSString *html = [[NSString alloc] initWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];

// Tell the web view to load it
[WebView loadHTMLString:html baseURL:[[NSBundle mainBundle] bundleURL]];

Это полезно, если вам нужно отредактировать HTML-код перед его загрузкой.

6 голосов
/ 29 марта 2016

Swift

    guard let path = NSBundle.mainBundle().pathForResource("index", ofType: "html") else {
        return
    }

    let url = NSURL(fileURLWithPath: path)
    self.webview.loadRequest(NSURLRequest(URL:url))
2 голосов
/ 02 июля 2012

Используя следующий код, вы можете загрузить html в WebView. Здесь есть веб-представление obj и inde

.
Web.delegate = self;

[Web loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"]isDirectory:NO]]];
1 голос
/ 27 мая 2016

В документации Apple предлагается использовать loadHTMLString:baseURL::

Используйте метод loadHTMLString: baseURL: для начала загрузки локальных файлов HTML или метод loadRequest: для начала загрузки веб-содержимого.Используйте метод stopLoading, чтобы остановить загрузку, и свойство загрузки, чтобы узнать, находится ли веб-представление в процессе загрузки.

Документация loadHTMLString:baseURL: предлагает дальнейшие рассуждения:

Чтобы избежать уязвимости для атак безопасности, обязательно используйте этот метод для загрузки локальных файлов HTML;не используйте loadRequest:.

Это может помочь: https://stackoverflow.com/a/29741277

0 голосов
/ 31 октября 2016
NSString *htmlFile = [[NSBundle mainBundle] pathForResource:@"privacy-Policy" ofType:@"html" inDirectory:nil];
NSData *htmlData = [NSData dataWithContentsOfFile:htmlFile];
[webView loadData:htmlData MIMEType:@"text/html" textEncodingName:@"UTF-8" baseURL:[NSURL URLWithString:@""]];
0 голосов
/ 06 мая 2016

Swift Version 2.1

// load html to String with Encoding
let path = NSBundle.mainBundle().pathForResource("policy", ofType: "html")
do {
    let fileHtml = try NSString(contentsOfFile: path!, encoding: NSUTF8StringEncoding)
    webView.loadHTMLString(fileHtml as String, baseURL: nil)
}
catch {

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...