iPhone dev: Załaduj plik z folderu zasobów
Piszę aplikację na iPhone ' a z UIWebView, która powinna wyświetlać różne pliki html, które mam w folderze zasobów aplikacji. W Xcode mój przegląd projektu, Te pliki html są wyświetlane w następujący sposób:
dirA
|---> index.html
|---> a1.html
|---> a2.html
|---> my.css
|---> dirB
|---> b1.html
|---> b2.html
|---> dirC
|---> c1.html
|---> c2.html
Te zasoby, które zostały dodane do projektu jako takie:
- zaznaczono opcję " Kopiuj elementy do folderu grupy docelowej (w razie potrzeby)".
- Typ odniesienia: domyślny.
- kodowanie tekstu: Unicode (utf-8).
- rekurencyjnie tworzy grupy dla dowolnych dodane foldery.
Linki w moim html są względne, co oznacza, że wyglądają tak:
<a href="a1.html">a1</a>
<a href="a2.html">a2</a>
<a href="dirB/b2.html">b2</a>
<a href="dirC/c1.html">c1</a>
W celu wyświetlenia indeksu.html po uruchomieniu aplikacji używam następującego kodu:
NSString *path = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"];
NSURL *url = [NSURL fileURLWithPath:path];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[webView loadRequest:request];
To działa dobrze. Następujące linki z pliku indeksu również działają dobrze, tak długo, jak żądane pliki html są bezpośrednio pod dirA. Jeśli odnośnik wskazuje na plik w podkatalogu, to didFailLoadWithError
wykryje sytuację i zgłosi, że żądany plik nie istnieć.
Również,
[webView loadHtmlString:myHtml];
Nie może być częścią rozwiązania, ponieważ potrzebuję przycisków Wstecz i do przodu, aby działać w moim widoku sieci.
Więc pytanie brzmi: Jak mogę śledzić względny link do pliku html w podkatalogu w moich zasobach?
Przez ostatnie kilka dni sprawdzałem stackoverflow i resztę rur, próbując to rozgryźć, ale nigdzie nie natrafiłem na rozwiązanie tego problemu. Każdy wgląd byłby bardzo, bardzo doceniam to!
EDIT: Yoohoo! Rozgryzłem to! Co za radość! Oto co zrobiłem:
- Zaimportowano ponownie Moje zasoby, wybierając "Utwórz referencje folderów dla dodanych folderów "zamiast" rekurencyjnie utwórz grupy dla dodanych folderów."
- podano katalog główny dla zasobu, w ten sposób:
NSString *path = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html" inDirectory:@"dirA"];
3 answers
Aby utworzyć foldery w pakiecie aplikacji przeciągnij folder do Xcode i wybierz przycisk radiowy: "Utwórz odwołania do folderów dla dodanych folderów".
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-26 11:55:41
Podkatalogi używane w XCode są grupami, a nie rzeczywistymi folderami. wszystkie zasoby są prawdopodobnie spłaszczone do folderu wyjściowego. Jeśli utworzysz rzeczywiste foldery poza XCode, które mogą działać. Spróbuj utworzyć folder i plik heirarchia i przeciągnij / upuść do XCode. Sprawdź również folder kompilacji za pomocą programu Finder, aby zobaczyć, jak XCode wdraża Twoje pliki.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-25 17:41:25
Udało mi się użyć plików HTML zawierających zasoby i linki przy użyciu ścieżek względnych za pomocą inicjalizatora +fileURLWithPath:
zamiast +URLWithString:
Podczas ładowania ciągu HTML i przekazywania baseURL w widoku sieci Web.
NSString* path = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html" inDirectory:@"HTMLContent"];
NSString* htmlString = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error];
[self.webView loadHTMLString:htmlString baseURL:[NSURL fileURLWithPath:path]];
"HTMLContent" jest moim odpowiednikiem dla twojego "dirA". Inne zmiany nie były wymagane.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-23 14:37:18