Come caricare il file html locale in UIWebView

Sto cercando di caricare un file html nel mio UIWebView ma non funzionerà. Ecco il punto: ho una cartella chiamata html_files nel mio progetto. Poi ho creato una webView nel generatore di interfacce e gli ho assegnato una presa nel viewController. Questo è il codice che sto usando per aggiungere il file 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]; } 

Ciò non funzionerà e UIWebView è vuoto. Gradirei un aiuto.

probabilmente è meglio usare NSString e caricare documenti html come segue:

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

veloce

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

Swift 3 ha poche modifiche:

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

Hai provato?

Verificare inoltre che la risorsa sia stata trovata da pathForResource:ofType:inDirectory chiamata pathForResource:ofType:inDirectory .

EDIT 2016-05-27loadRequest espone “una vulnerabilità universale di Cross-Site Scripting”. Assicurati di possedere ogni singolo bene che carichi. Se si carica uno script non valido, può caricare tutto ciò che desidera.

Se hai bisogno di collegamenti relativi per lavorare localmente, usa questo:

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

Il pacchetto cercherà tutte le sottodirectory del progetto per trovare my.html . (la struttura della directory viene appiattita al momento della compilazione)

Se my.html ha il tag , la https://stackoverflow.com/questions/7063276/how-to-load-local-html-file-into-uiwebview/some.png carica https://stackoverflow.com/questions/7063276/how-to-load-local-html-file-into-uiwebview/some.png dal tuo progetto.

da questo puoi caricare il file html che si trova nel tuo progetto Assets (bundle) a 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]]]; 

potrebbe essere questo è utile a voi.

Suppongo che tu debba allocate e webview prima la tua webview ::

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

Uno snippet di codice Copia-Incolla semplice:

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

Nota:

Assicurati che l’ appartenenza al target del file html sia selezionata altrimenti l’eccezione verrà generata: –

inserisci la descrizione dell'immagine qui

Termina l’app a causa di un’eccezione non rilevata

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

Per 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) 

Potrebbe essere il tuo file HTML non supporta la codifica UTF-8, perché lo stesso codice funziona per me.

Oppure puoi anche usare questa riga di codice:

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

Ecco come funziona il file HTML con 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]; 

Puoi utilizzare le richieste per chiamare il file HTML in UIWebview

Assicurati che “html_files” sia una directory nel pacchetto principale della tua app e non solo un gruppo in Xcode.

Un nuovo modo per farlo usando swift. UIWebView non esiste più e WKWebView è la nuova class per caricare pagine Web, che garantisce le funzionalità di Safari alla visualizzazione 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"]; 

Potrebbe essere tardi, ma se il file da pathForResource è nil , dovresti aggiungerlo nelle Build Phases > Copy Bundle Resources .

inserisci la descrizione dell'immagine qui

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

In Swift 2.0, la risposta di @ user478681 potrebbe essere simile a questa:

  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) 

Metti tutti i file (html e risorse) in una directory (per il mio “manuale”). Successivamente, trascina la directory su XCode, sopra “File di supporto”. Dovresti controllare le opzioni “Copia elementi se necessario” e “Crea riferimenti cartella”. Quindi, scrivi un codice semplice:

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

Attenzione a @"manual/index" , manuale è il nome della mia directory !! È tutto !!!! Scusa per il mio cattivo inglese…

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

Ciao Costa Rica. Ponga los archivos (html y demás recursos) en un directorio (en mi caso lo llamé manual), luego, arrastre y suelte en XCode, sobre “File di supporto”. Usted debe seleccionar las opciones “Copia elementi se necessario” y “Crea riferimenti cartella”.

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

Presta atención a @"manual/index" , manual es el nombre de mi directorio !!