Como carregar o arquivo html local no UIWebView

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 append 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.

    provavelmente é melhor usar 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?

    Verifique também se o recurso foi encontrado por pathForResource:ofType:inDirectory call.

    EDIT loadRequestloadRequest expõe “uma vulnerabilidade universal de Cross-Site Scripting”. Certifique-se de possuir todos os ativos que você carrega. Se você carregar um script incorreto, ele poderá carregar o que quiser.

    Se você precisar de links relativos para trabalhar localmente, use isto:

     NSURL *url = [[NSBundle mainBundle] URLForResource:@"my" withExtension:@"html"]; [webView loadRequest:[NSURLRequest requestWithURL:url]]; 

    O pacote pesquisará todos os subdiretórios do projeto para localizar my.html . (a estrutura de diretórios fica achatada no momento da compilation)

    Se my.html tiver a tag , o webView irá carregar https://stackoverflow.com/questions/7063276/how-to-load-local-html-file-into-uiwebview/some.png do seu projeto.

    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ê.

    Eu acho que você precisa allocate e iniciar seu webview primeiro ::

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

    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: –

    insira a descrição da imagem aqui

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

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

     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://stackoverflow.com/review/first-postsithURL:[NSURL fileURLWithPath:filePath]]]; 

    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]; 

    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 as solicitações para chamar o arquivo HTML em sua UIWebview

    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) 

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

    Uma nova maneira de fazer isso usando swift. O UIWebView não existe mais e o WKWebView é a nova class para carregar páginas da web, o que garante os resources 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) 
     Swift iOS: // get server url from the plist directory var htmlFile = NSBundle.mainBundle().pathForResource("animation_bg", ofType: "html")! var htmlString = NSString(contentsOfFile: htmlFile, encoding: NSUTF8StringEncoding, error: nil) self.webView.loadHTMLString(htmlString, baseURL: nil) 
     [[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 .

    insira a descrição da imagem aqui

    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 _ { } } 
     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 _ { } } 

    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) 

    Coloque todos os arquivos (html e resources) em um diretório (para o meu “manual”). Em seguida, arraste e solte o diretório para XCode, em “Arquivos de Suporte”. 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 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 !!