Я пишу приложение для 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-файл в подкаталоге моих ресурсов?
В течение последних нескольких дней я проходил через стекопоток и остальные трубки, пытаясь выяснить это, но нигде не нашел решения этой конкретной проблемы. Любое понимание было бы очень, очень высоко ценится!
РЕДАКТИРОВАТЬ: Yoohoo! Я понял! Какая радость! Вот что я сделал:
- Импортировал мои ресурсы заново, выбрав «Создать ссылки на папки для любых добавленных папок» вместо «Рекурсивно создавать группы для любых добавленных папок».
- Указан корневой каталог для ресурса, например:
NSString *path = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html" inDirectory:@"dirA"];