Как загрузить локальные HTML-файлы с изображениями, js и css в WebView Cocoa / Mac OS - PullRequest
10 голосов
/ 26 июля 2011

У меня есть код, чтобы заставить это работать на iOS.Используя все, что я нашел здесь и в Интернете, мне удалось найти версию Cocoa Mac Os, но изображения не загружаются.CSS и Javascript тоже не загружаются.Каталог для HTML добавляется в группу «Ресурсы», но он добавляется в виде «Ссылки на папку» (синяя папка), что заставляет XCode уважать структуру каталогов приложения HTML.

Вот код, который я пытаюсь использовать:

NSString *htmlPath = [[NSBundle mainBundle] pathForResource:@"index" 
                                                     ofType:@"html" 
                                                inDirectory:@"/Patient_eMMR_HTML5" ];
NSString *html = [NSString stringWithContentsOfFile:htmlPath 
                                           encoding:NSUTF8StringEncoding 
                                              error:nil];

[[webView mainFrame] loadHTMLString:html baseURL:[NSURL fileURLWithPath:
                                                   [NSString stringWithFormat:@"%@/Patient_eMMR_HTML5/", 
                                                   [[NSBundle mainBundle] bundlePath]]]];

Это версия кода для iOS, из которой я основал код, который я использую выше:

NSString *htmlPath = [[NSBundle mainBundle] pathForResource:@"index" 
                                                     ofType:@"html" 
                                                inDirectory:@"/Patient_eMMR_HTML5" ];

NSString *html = [NSString stringWithContentsOfFile:htmlPath 
                                           encoding:NSUTF8StringEncoding 
                                              error:nil];

[webView loadHTMLString:html 
                baseURL:[NSURL fileURLWithPath:
                         [NSString stringWithFormat:@"%@/Patient_eMMR_HTML5/", 
                          [[NSBundle mainBundle] bundlePath]]]];

Любая помощь очень ценится.Спасибо.

Ответы [ 3 ]

14 голосов
/ 27 июля 2011

Нет необходимости разбираться с базовыми URL, если вы загружаете HTML через NSURLRequest, а не как строку:

NSString* filePath = [[NSBundle mainBundle] pathForResource:@"index" 
                                                     ofType:@"html"
                                                inDirectory:@"Patient_eMMR_HTML5"];
NSURL* fileURL = [NSURL fileURLWithPath:filePath];
NSURLRequest* request = [NSURLRequest requestWithURL:fileURL];
[[webView mainFrame] loadRequest:request];

Обратите внимание, что вы должны указывать имя каталога только в ‑pathForResource:… метод, не ставьте перед ним косую черту.Предполагается, что указанный каталог коренится в каталоге основного пакета.

Обратите внимание, что UIWebView также имеет метод ‑loadRequest:, поэтому вы можете использовать почти тот же код на iOS.

3 голосов
/ 02 марта 2014

Это сработало для меня с resourceURL на Mac OSX

[webView loadHTMLString:htmlContent baseURL:[[NSBundle mainBundle] resourceURL]]
1 голос
/ 04 августа 2011

mserin, этот вопрос был направлен на Cocoa Framework для Mac Os X. Вы используете UIWebView, который является частью UIKit для Cocoa Touch. Если вы пытаетесь создать это для iPhone / iPad, вы должны посмотреть этот пост.

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

#import <WebKit/WebKit.h>

И затем подкласс WebView, а не UIWebView:

WebView *webView;

С таким свойством:

@property (nonatomic, retain) IBOutlet WebView *webView;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...