Я пишу iPhone-приложение с UIWebView, которое должно отображать различные html файлы, которые у меня есть в папке ресурса приложения. В xcode мой обзор проекта эти html файлы отображаются следующим образом:
dirA
|---> index.html
|---> a1.html
|---> a2.html
|---> my.css
|---> dirB
|---> b1.html
|---> b2.html
|---> dirC
|---> c1.html
|---> c2.html
Эти ресурсы, добавленные в проект как таковой:
- Проверено "Скопируйте элементы в папку целевых групп (если необходимо)".
- Тип ссылки: по умолчанию.
- Текстовое кодирование: Unicode (utf-8).
- Рекурсивно создавать группы для любых добавленных папок.
Ссылки в моем html являются относительными, что означает, что они выглядят следующим образом:
<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>
Чтобы отобразить index.html при запуске приложения, я использую следующий код:
NSString *path = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"];
NSURL *url = [NSURL fileURLWithPath:path];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[webView loadRequest:request];
Это прекрасно работает. Следующие ссылки из файла индекса также отлично работают, если запрошенные html файлы находятся непосредственно под dirA. Если ссылка за точкой указывает на файл в подкаталоге, то didFailLoadWithError
поймает ситуацию и сообщит, что запрошенный файл не существует.
Кроме того,
[webView loadHtmlString:myHtml];
не может быть частью решения, так как мне нужны кнопки назад и вперед для работы в моем веб-представлении.
Итак, вопрос: как я могу следовать относительной ссылке на html файл в подкаталоге в моих ресурсах?
В течение последних нескольких дней я все время сталкивался с stackoverflow и остальными трубами, пытаясь понять это, но нигде я не нашел решения этой точной проблемы. Любая проницательность вообще была бы очень-очень оценена!
EDIT: Yoohoo! Я понял! Какая радость! Вот что я сделал:
- Импортировал мои ресурсы заново, выбрав "Создать ссылки на папки для любых добавленных папок" вместо "Рекурсивно создавать группы для любых добавленных папок".
- Указал корневой каталог ресурса, например:
NSString *path = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html" inDirectory:@"dirA"];