Próbuję załadować plik HTML do mojego UIWebView, ale to nie zadziała. Oto etap: mam folder o nazwie html_files w moim projekcie. Następnie utworzyłem webView w kreatorze interfejsów i przypisałem do niego gniazdko w viewController. Oto kod, którego używam do dołączania pliku 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];
}
To nie zadziała, a UIWebView jest puste. Byłbym wdzięczny za pomoc.
ios
objective-c
iphone
cocoa-touch
uiwebview
madcoderz
źródło
źródło
EDYCJA 2016-05-27 -
loadRequest
ujawnia „uniwersalną lukę w zabezpieczeniach skryptów między witrynami”.Upewnij się, że jesteś właścicielem każdego załadowanego zasobu. Jeśli załadujesz zły skrypt, może załadować wszystko, czego chce.Jeśli potrzebujesz linków względnych do pracy lokalnie, użyj tego:
Pakiet przeszuka wszystkie podkatalogi projektu, aby znaleźć
my.html
. (struktura katalogów zostaje spłaszczona w czasie kompilacji)Jeśli
my.html
ma tag<img src="some.png">
, webView zostanie załadowanysome.png
z Twojego projektu.źródło
w ten sposób możesz załadować plik html, który jest w Twoim projekcie Assets (bundle) do webView.
może ci się to przydać.
źródło
Myślę, że musisz
allocate
i zainicjować swójwebview
pierwszy:źródło
Prosty fragment kodu kopiuj-wklej:
Uwaga:
Upewnij się, że członkostwo docelowe pliku html jest zaznaczone, w przeciwnym razie zostanie zgłoszony następujący wyjątek: -
Zamykanie aplikacji z powodu nieprzechwyconego wyjątku
'NSInvalidArgumentException', reason: '*** -[NSURL initFileURLWithPath:isDirectory:]: nil string parameter'
źródło
Dla Swift 3 i Swift 4:
źródło
źródło
Być może Twój plik HTML nie obsługuje kodowania UTF-8, ponieważ ten sam kod działa dla mnie.
Lub możesz również te linie kodu:
źródło
Oto sposób działania pliku HTML z Jquery.
Możesz użyć obu żądań, aby wywołać plik HTML w swoim UIWebview
źródło
Upewnij się, że „html_files” to katalog w głównym pakiecie Twojej aplikacji, a nie tylko grupa w Xcode.
źródło
Nowy sposób na zrobienie tego za pomocą narzędzia Swift. UIWebView już nie istnieje, a WKWebView to nowa klasa do ładowania stron internetowych, która zapewnia funkcje Safari w widoku sieci Web.
źródło
źródło
Może być późno, ale jeśli plik pochodzi z
pathForResource
domenynil
, należy go dodać w formacieBuild Phases > Copy Bundle Resources
.źródło
Oto Swift 3:
źródło
źródło
W Swift 2.0 odpowiedź @ user478681 może wyglądać następująco:
źródło
Umieść wszystkie pliki (html i zasoby) w katalogu (dla mojego „podręcznika”). Następnie przeciągnij i upuść katalog do XCode, nad „Supporting Files”. Należy zaznaczyć opcje „W razie potrzeby kopiuj elementy” i „Utwórz odniesienia do folderów”. Następnie napisz prosty kod:
Uwaga
@"manual/index"
, podręcznik to nazwa mojego katalogu !! To wszystko !!!! Przepraszam za mój zły angielski...==================================================== =====================
Hola desde 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 „Supporting Files”. Usted debe seleccionar las opciones "Kopiuj elementy w razie potrzeby" y "Utwórz odniesienia do folderów".
Presta atención a
@"manual/index"
, manual es el nombre de mi Directorio !!źródło
Kiedy Twój projekt się powiększy, możesz potrzebować jakiejś struktury, aby strona HTML mogła odwoływać się do plików znajdujących się w podfolderach.
Zakładając, że przeciągniesz
html_files
folder do Xcode i wybierzesz opcję Utwórz odwołania do folderów , poniższy kod Swift zapewnia, żeWKWebView
obsługuje również wynikową strukturę folderów:Oznacza to, że jeśli twój
sample.html
plik zawiera<img src="subfolder/myimage.jpg">
tag, to plik graficznymyimage.jpg
w programiesubfolder
również zostanie załadowany i wyświetlony.Kredyty: https://stackoverflow.com/a/8436281/4769344
źródło