Ich habe eine Webansicht in meiner iPhone-Anwendung und ich habe auch einige HTML-Dateien in meinem Ressourcenordner. Wenn meine App geladen wird, lade ich eine Seite aus meinen Ressourcen in meine Webansicht. Aber ich muss Links in meiner Webansicht erstellen, die auf andere Ressourcen verweisen (z. B. Bilder oder andere HTML-Dateien). Nur einen relativen Link zu machen, funktioniert nicht:
Haben Sie etwas dagegen, ein vollständiges Beispiel für den funktionierenden Code zu geben? Nachdem ich diese Seite gründlich gelesen habe, bin ich immer noch etwas verwirrt darüber, wie ich alles richtig zusammensetzen soll. Danke.
Problem: UIWebView kann keine lokalen Ressourcen in Apps laden, die gegen 3.0 erstellt wurden.
Beim Benutzen [UIWebView
loadHTMLString:baseURL:]sollte der HTML-String nicht auf lokale Ressourcen mit dem verweisen file:// planen. Passen Sie stattdessen ein NULL oder ein file://
URL für baseURL:oder binden Sie die Ressourcen direkt in das HTML mit ein <style> und <script> Stichworte.
Meinetwegen. Aber vorbei in einer Standardausgabe file:// URL für baseURL funktioniert nicht ganz. Allerdings … stellt sich heraus, dass, wenn Sie ändern / zu // und Leerzeichen zu %20, Sie werden eingestellt! (Verwenden %20 macht sehr viel Sinn, aber der Teil mit den doppelten Schrägstrichen hat mich überrascht.)
Nehmen wir an, Sie haben bereits NSString *markup installieren. Hier ist alles, was Sie tun. (Ich habe den Code aus Gründen der Lesbarkeit hier eingefügt. Sie können ihn nach Belieben umgestalten/anpassen.)
Solange auf Ihr CSS, JavaScript und Ihre Bilder nur durch den Dateinamen verwiesen wird, sollte dies in iPhone OS 3.0 ausreichen, wo loadHTMLString:baseURL: ist besorgt!
funktioniert super, danke fürs Posten … das sollte die richtige Antwort sein
– samik
13. Mai ’10 um 7:06 Uhr
Weißt du … jetzt, wo ich mir ansehe, was ich noch einmal geschrieben habe, frage ich mich, ob ich einen Fauxpas gemacht habe, indem ich „file:/%@//“ anstelle von „file://%@/“ verwendet habe? Das könnte die unbeabsichtigte Quelle der Anforderung / to // sein, in diesem Fall geht es nur um den Umgang mit Leerzeichen, was Standard-S/G/HTML-Zeug ist. Die Gedanken? (Es ist schon eine Weile her, also wenn ich hier meine eigene Logik vergesse, könnt ihr mich gerne korrigieren – ha!)
– Joe D’Andrea
17. Mai ’10 um 17:59 Uhr
Hatte das gleiche Problem gerade in iOS 4.2. Lokale Bilder wurden nicht angezeigt. Dann habe ich meine URL so formatiert (vierfache Schrägstriche!) Und es funktioniert: “file:////Users//iDeveloper//Library//Application%20Support//iPhone%20Simulator//4.2//Applications// 9706B7FE-4FAC-4FB0-9DA4-C07F322D4AC1//TestBrowser.app//Data//HTML//English//”. Die Verwendung der “richtigen” Syntax mit einem Schrägstrich im Pfad und zwei Schrägstrichen für “file://” funktioniert NICHT. Vielen Dank!
– Krumelur
20. April 11 um 12:34 Uhr
Wenn Sie diese Ressourcen laden, müssen Sie die Basis-URL festlegen. Sie können dies mit der Methode tun:
Scheint nicht in iPhone OS 3.0 zu funktionieren. Siehe meinen anderen Beitrag für eine leichte Änderung!
– Joe D’Andrea
08.09.09 um 21:03 Uhr
Dieser Code würde eine Zeichenfolge mit der URL einer Datei namens „https://stackoverflow.com/questions/478665/OtherPage.html“ im Ressourcenverzeichnis Ihres Bundles zurückgeben.
Das hat bei mir funktioniert. Meine HTML-Dateien befanden sich in Unterordnern (nicht Gruppen) in meinem Projekt. Meine HTML-Seite heißt page01 und der Unterordner ist html:
Versuchen Sie zuerst, OtherPage.html zu laden. Wenn dies nicht möglich ist, ist es nicht vorhanden, und Sie haben einen Teil des Hinzufügens zum Projekt verpasst. Wenn Sie können, enthält der Link möglicherweise nur einen Tippfehler, oder die Basis-URL ist möglicherweise falsch, wie von August angegeben. Als ich eine HTML-Datei mit Bildern erstellte, die sich in der Ressourcendatei befanden, funktionierte es nur mit
Haben Sie etwas dagegen, ein vollständiges Beispiel für den funktionierenden Code zu geben? Nachdem ich diese Seite gründlich gelesen habe, bin ich immer noch etwas verwirrt darüber, wie ich alles richtig zusammensetzen soll. Danke.
– mw
8. Juni 10 um 1:52