Как загрузить локальный html-файл в UIWebView

Я пытаюсь загрузить html-файл в свой UIWebView, но он не будет работать. Вот сцена: у меня есть папка html_files в моем проекте. Затем я создал webView в построителе интерфейса и назначил ему выход в viewController. Это код, который я использую для добавления файла 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]; } 

Это не сработает, а UIWebView пуст. Я был бы рад помочь.

вероятно, лучше использовать NSString и загрузить html-документ следующим образом:

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

стриж

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

Swift 3 имеет несколько изменений:

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

Ты пробовал?

Также проверьте, что ресурс был найден путем pathForResource:ofType:inDirectory call.

EDIT 2016-05-27loadRequest раскрывает «универсальную уязвимость межсайтового скриптинга». Убедитесь, что вы владеете каждым активным активом, который вы загружаете. Если вы загружаете плохой скрипт, он может загружать все, что захочет.

Если вам нужны относительные ссылки для работы на местном уровне, используйте это:

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

Пакет будет искать все подкаталоги проекта, чтобы найти my.html . (структура каталога сглаживается при времени сборки)

Если my.html имеет тег , webView загрузит https://stackoverflow.com/questions/7063276/how-to-load-local-html-file-into-uiwebview/some.png из вашего проекта.

этим вы можете загрузить html-файл, который находится в вашем проекте Assets (bundle) в 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]]]; 

может быть, это полезно для вас.

Я предполагаю, что вам нужно allocate и сначала 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]; } 

Простой fragment кода «Копировать-Вставить»:

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

Заметка:

Убедитесь, что целевое членство в файле html проверено в противном случае после исключения будет выбрано:

введите описание изображения здесь

Завершение приложения из-за неперехваченного исключения

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

Для Swift 3 и 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) 

Возможно, ваш HTML-файл не поддерживает кодировку UTF-8, потому что для меня работает тот же код.

Или вы также можете использовать эту строку кода:

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

Вот как работает HTML-файл с 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]; 

Вы можете использовать либо запросы для вызова HTML-файла в вашем UIWebview

Убедитесь, что «html_files» – это каталог в главном комплекте приложения, а не только группа в Xcode.

Новый способ сделать это с помощью быстрой. UIWebView больше не существует, и WKWebView – это новый class для загрузки веб-страниц, который обеспечивает функции Safari для веб-представления.

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

Это может быть поздно, но если файл из pathForResource равен nil вы должны добавить его на этапе Build Phases > Copy Bundle Resources pathForResource .

введите описание изображения здесь

Вот 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 _ { } } 

В Swift 2.0 ответ @ user478681 может выглядеть так:

  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) 

Поместите все файлы (html и ресурсы) в каталог (для моего «руководства»). Затем перетащите каталог в XCode через «Поддержка файлов». Вы должны проверить параметры «Копировать элементы, если необходимо» и «Создать ссылки на папки». Затем напишите простой код:

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

Внимание к @"manual/index" , руководство – это имя моего каталога !! Это все !!!! Извините за мой плохой английский…

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

Гола от Коста-Рики. Ponga los archivos (html y demás recursos) en un directorio (en mi caso lo llamé manual), luego, arrastre y suelte en XCode, sobre «Поддержка файлов». Usted debe seleccionar las opciones «Скопируйте элементы при необходимости» y «Создать ссылки на папки».

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

Presta atención @"manual/index" , руководство es el nombre de mi directorio !!

  • Прокрутка двумя пальцами с помощью UIScrollView
  • С ARC, что лучше: alloc или autorelease инициализаторы?
  • Удалить HTML-tags из NSString на iPhone
  • Как добавить 1 день к NSDate?
  • iPhone Facebook Загрузка видео
  • XCode 4 зависает при «Присоединении к (имя приложения)»
  • глубокая изменчивая копия NSMutableDictionary
  • Ссылка с UITableViewCell на родительский UITableView?
  • Как настроить размер содержимого UIScrollView динамически
  • Аккордеонная ячейка таблицы - Как динамически расширять / сокращать uitableviewcell?
  • iOS HTTP-запрос в фоновом режиме
  • Давайте будем гением компьютера.