Ich versuche, eine HTML-Datei in meine UIWebView zu laden, aber es funktioniert nicht. Hier ist die Phase: Ich habe einen Ordner namens html_files in meinem Projekt. Dann habe ich im Interface Builder eine WebView erstellt und ihr im viewController eine Steckdose zugewiesen. Dies ist der Code, mit dem ich die HTML-Datei anhänge:
-(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];
}
Das wird nicht funktionieren und die UIWebView ist leer. Ich würde mich über Hilfe freuen.
ios
objective-c
iphone
cocoa-touch
uiwebview
Madcoderz
quelle
quelle
EDIT 2016-05-27 -
loadRequest
enthüllt "eine universelle Sicherheitsanfälligkeit in Bezug auf Cross-Site Scripting". Stellen Sie sicher, dass Sie jedes einzelne Asset besitzen, das Sie laden. Wenn Sie ein fehlerhaftes Skript laden, kann es alles laden, was es will.Wenn Sie relative Links benötigen, um lokal zu arbeiten, verwenden Sie Folgendes:
Das Bundle durchsucht alle Unterverzeichnisse des Projekts, um sie zu finden
my.html
. (Die Verzeichnisstruktur wird beim Erstellen abgeflacht.)Wenn
my.html
das Tag vorhanden ist<img src="some.png">
, wird die Webansichtsome.png
aus Ihrem Projekt geladen .quelle
Auf diese Weise können Sie eine HTML-Datei, die sich in Ihrem Projekt Assets (Bundle) befindet, in webView laden.
Möglicherweise ist dies für Sie nützlich.
quelle
Ich denke du musst
allocate
und initiierst deinwebview
erstes ::quelle
Ein einfaches Code-Snippet zum Kopieren und Einfügen:
Hinweis:
Stellen Sie sicher, dass die Zielmitgliedschaft der HTML-Datei aktiviert ist. Andernfalls wird die folgende Ausnahme ausgelöst: -
Beenden der App aufgrund einer nicht erfassten Ausnahme
'NSInvalidArgumentException', reason: '*** -[NSURL initFileURLWithPath:isDirectory:]: nil string parameter'
quelle
Für Swift 3 und Swift 4:
quelle
quelle
Möglicherweise unterstützt Ihre HTML-Datei keine UTF-8-Codierung, da für mich derselbe Code funktioniert.
Oder Sie können auch diese Codezeile:
quelle
Hier die Arbeitsweise von HTML-Dateien mit Jquery.
Sie können entweder die Anforderungen verwenden, um die HTML-Datei in Ihrer UIWebview aufzurufen
quelle
Stellen Sie sicher, dass "html_files" ein Verzeichnis im Hauptpaket Ihrer App ist und nicht nur eine Gruppe in Xcode.
quelle
Ein neuer Weg, dies mit Swift zu tun. Das UIWebView gibt es nicht mehr und WKWebView ist die neue Klasse zum Laden von Webseiten, die die Safari-Funktionen in der Webansicht sicherstellt.
quelle
quelle
Es kann spät sein, aber wenn die Datei von
pathForResource
istnil
, sollten Sie sie in die hinzufügenBuild Phases > Copy Bundle Resources
.quelle
Hier ist Swift 3:
quelle
quelle
In Swift 2.0 könnte die Antwort von @ user478681 folgendermaßen aussehen:
quelle
Legen Sie alle Dateien (HTML und Ressourcen) in ein Verzeichnis (für mein "Handbuch"). Ziehen Sie als Nächstes das Verzeichnis über "Unterstützende Dateien" in XCode. Sie sollten die Optionen "Elemente bei Bedarf kopieren" und "Ordnerreferenzen erstellen" aktivieren. Schreiben Sie als nächstes einen einfachen Code:
Achtung
@"manual/index"
, Handbuch ist der Name meines Verzeichnisses !! Es ist alles !!!! Entschuldigung für mein schlechtes Englisch...================================================== =====================
Hola desde Costa Rica. Ponga los archivos (html y demás recursos) und un directio (en mi caso lo llamé manual), luego, arrastre y suelte en XCode, sobre "Supporting Files". Usted debe seleccionar las opciones "Elemente bei Bedarf kopieren" y "Ordnerreferenzen erstellen".
Presta atención a
@"manual/index"
, Handbuch es el nombre de mi Directorio !!quelle
Wenn Ihr Projekt größer wird, benötigen Sie möglicherweise eine Struktur, damit Ihre HTML-Seite auf Dateien in Unterordnern verweisen kann.
Angenommen, Sie ziehen Ihren
html_files
Ordner auf Xcode und wählen die Option Ordnerreferenzen erstellen . Der folgende Swift- Code stellt sicher, dassWKWebView
auch die resultierende Ordnerstruktur unterstützt wird:Dies bedeutet, dass wenn Ihre
sample.html
Datei ein<img src="subfolder/myimage.jpg">
Tag enthält , die Bilddateimyimage.jpg
insubfolder
wird auch geladen und angezeigt werden.Credits: https://stackoverflow.com/a/8436281/4769344
quelle