iphone tutorial Como carregar o arquivo html local no UIWebView




wkwebview ios version (14)

Para Swift 3 e Swift 4:

let htmlFile = Bundle.main.path(forResource: "name_resource", ofType: "html")
let html = try! String(contentsOfFile: htmlFile!, encoding: String.Encoding.utf8)
self.webView.loadHTMLString(html, baseURL: nil)

Eu estou tentando carregar um arquivo html no meu UIWebView, mas não vai funcionar. Aqui está o estágio: Eu tenho uma pasta chamada html_files no meu projeto. Então eu criei um webView no construtor de interface e designei uma saída para ele no viewController. Este é o código que estou usando para anexar o arquivo html:

-(void)viewDidLoad
{
    NSString *htmlFile = [[NSBundle mainBundle] pathForResource:@"sample" ofType:@"html" inDirectory:@"html_files"];
    NSData *htmlData = [NSData dataWithContentsOfFile:htmlFile];
    [webView loadData:htmlData MIMEType:@"text/html" textEncodingName:@"UTF-8" baseURL:[NSURL URLWithString:@""]];
    [super viewDidLoad];
}

Isso não funcionará e o UIWebView está em branco. Eu apreciaria alguma ajuda.


Um snippet de código Copiar-Colar simples:

-(void)LoadLocalHtmlFile:(NSString *)fileName onWebVu:(UIWebView*)webVu
{
    [webVu loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle]pathForResource:fileName ofType:@"html"]isDirectory:NO]]];
}

Nota:

Certifique-se de que a associação de destino do arquivo html esteja marcada, caso contrário, a seguinte exceção será emitida: -

Aplicativo de finalização devido a uma exceção não identificada

'NSInvalidArgumentException', reason: '*** -[NSURL initFileURLWithPath:isDirectory:]: nil string parameter'


Pode ser que seu arquivo HTML não suporte a codificação UTF-8, porque o mesmo código está funcionando para mim.

Ou você também pode essa linha de código:

NSString *htmlFile = [[NSBundle mainBundle] pathForResource:@"Notes For Apple" ofType:@"htm" inDirectory:nil];
NSString* htmlString = [NSString stringWithContentsOfFile:htmlFile encoding:NSUTF8StringEncoding error:nil];
[WebView loadHTMLString:htmlString baseURL:nil];

UIWebView *web=[[UIWebView alloc]initWithFrame:self.view.frame];
    //[self.view addSubview:web];
    NSString *filePath=[[NSBundle mainBundle]pathForResource:@"browser_demo" ofType:@"html" inDirectory:nil];
    [web loadRequest:[NSURLRequest requestWhttp://.com/review/first-postsithURL:[NSURL fileURLWithPath:filePath]]];

Coloque todos os arquivos (html e recursos) em um diretório (para o meu "manual"). Em seguida, arraste e solte o diretório para XCode, sobre "Supporting Files". Você deve verificar as opções "Copiar itens, se necessário" e "Criar referências de pasta". Em seguida, escreva um código simples:

NSURL *url = [[NSBundle mainBundle] URLForResource:@"manual/index" withExtension:@"html"];
[myWebView loadRequest:[NSURLRequest requestWithURL:url]];

Atenção para @"manual/index" , manual é o nome do meu diretório !! É tudo !!!! Desculpe pelo meu mau inglês ...

================================================== =====================

Hola desde a Costa Rica. Ponga los archivos (html y demás resources) en un directorio (en mi caso lo llamé manual), luego, arrastre and suelte en XCode, sobre "Supporting Files". Você deve selecionar as opções "Copiar itens, se necessário", "Criar referências de pasta".

NSURL *url = [[NSBundle mainBundle] URLForResource:@"manual/index" withExtension:@"html"];
[myWebView loadRequest:[NSURLRequest requestWithURL:url]];

Presta atención a @"manual/index" , manual é o nome de mi diretorio !!


if let htmlFile = NSBundle.mainBundle().pathForResource("aa", ofType: "html"){
    do{
        let htmlString = try NSString(contentsOfFile: htmlFile, encoding:NSUTF8StringEncoding )
        webView.loadHTMLString(htmlString as String, baseURL: nil)
    }
    catch _ {
    }
}

Aqui está o Swift 3:

    if let htmlFile = Bundle.main.path(forResource: "aa", ofType: "html"){
        do{
            let htmlString = try NSString(contentsOfFile: htmlFile, encoding:String.Encoding.utf8.rawValue )
            messageWebView.loadHTMLString(htmlString as String, baseURL: nil)
        }
        catch _ {
        }
    }

[[NSBundle mainBundle] pathForResource:@"marqueeMusic" ofType:@"html"];

Pode ser tarde, mas se o arquivo de pathForResource for nil você deverá adicioná-lo nas Build Phases > Copy Bundle Resources .


No Swift 2.0, a resposta do @ user478681 pode ser assim:

    let HTMLDocumentPath = NSBundle.mainBundle().pathForResource("index", ofType: "html")
    let HTMLString: NSString?

    do {
        HTMLString = try NSString(contentsOfFile: HTMLDocumentPath!, encoding: NSUTF8StringEncoding)
    } catch {
        HTMLString = nil
    }

    myWebView.loadHTMLString(HTMLString as! String, baseURL: nil)

Uma nova maneira de fazer isso usando o swift. O UIWebView não existe mais e o WKWebView é a nova classe para carregar páginas da web, o que garante os recursos do Safari para a visualização da web.

    import WebKit

    let preferences = WKPreferences()
    preferences.javaScriptCanOpenWindowsAutomatically = false

    let configuration = WKWebViewConfiguration()
    configuration.preferences = preferences

    let webView = WKWebView(frame: self.view.bounds, configuration: configuration)
    let request = NSURLRequest(URL: NSURL(string: "http://nshipster.com"))
    webView.loadRequest(request)

por isso você pode carregar o arquivo html que está no seu projeto Ativos (pacote) para o webView.

 UIWebView *web = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];
    [web loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] 
                                pathForResource:@"test" ofType:@"html"]isDirectory:NO]]];

pode ser isso é útil para você.


Aqui a maneira como funciona o arquivo HTML com Jquery.

 _webview=[[UIWebView alloc]initWithFrame:CGRectMake(0, 0, 320, 568)];
    [self.view addSubview:_webview];

    NSString *filePath=[[NSBundle mainBundle]pathForResource:@"jquery" ofType:@"html" inDirectory:nil];

    NSLog(@"%@",filePath);
    NSString *htmlstring=[NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];

    [_webview loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:filePath]]];
                         or
    [_webview loadHTMLString:htmlstring baseURL:nil];

Você pode usar os pedidos para chamar o arquivo HTML em sua UIWebview


provavelmente é melhor usar o NSString e carregar o documento html da seguinte maneira:

Objetivo-C

NSString *htmlFile = [[NSBundle mainBundle] pathForResource:@"sample" ofType:@"html"];
NSString* htmlString = [NSString stringWithContentsOfFile:htmlFile encoding:NSUTF8StringEncoding error:nil];
[webView loadHTMLString:htmlString baseURL: [[NSBundle mainBundle] bundleURL]];

Rápido

let htmlFile = NSBundle.mainBundle().pathForResource("fileName", ofType: "html")
let html = try? String(contentsOfFile: htmlFile!, encoding: NSUTF8StringEncoding)
webView.loadHTMLString(html!, baseURL: nil) 

O Swift 3 tem poucas alterações:

let htmlFile = Bundle.main.path(forResource: "intro", ofType: "html")
let html = try? String(contentsOfFile: htmlFile!, encoding: String.Encoding.utf8)
webView.loadHTMLString(html!, baseURL: nil)

Você tentou?

Além disso, verifique se o recurso foi encontrado por pathForResource:ofType:inDirectory call.


Verifique se "html_files" é um diretório no pacote principal do seu aplicativo e não apenas um grupo no Xcode.





uiwebview