Я пишу приложение для iPhone с UIWebView, который должен отобразить различные файлы HTML, которые я имею в папке ресурса приложений. В XCode мой обзор проекта эти файлы HTML отображены как это:
dirA
|---> index.html
|---> a1.html
|---> a2.html
|---> my.css
|---> dirB
|---> b1.html
|---> b2.html
|---> dirC
|---> c1.html
|---> c2.html
Эти ресурсы, где добавлено к проекту как таковому:
Ссылки в моем 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 и остальной части труб в течение прошедших нескольких дней, пытаясь понять этого, но нигде не сделал, я сталкиваюсь с решением этой точной проблемы. Любое понимание вообще очень, очень ценилось бы!
Править: Yoohoo! Я понял это! Какая радость! Вот то, что я сделал:
NSString *path = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html" inDirectory:@"dirA"];
Для создания папок в пакете приложений перетащите папку в Xcode и выберите радиокнопку: "Создавать ссылки на папки для любых добавленных папок".
Подкаталоги, которые вы используете в XCode, представляют собой группы, а не фактические папки. все ресурсы, скорее всего, переносятся в выходную папку. Если вы создаете фактические папки вне XCode, это может сработать. Попробуйте создать иерархию папок и файлов и перетащите их в XCode. Также проверьте папку сборки с помощью Finder, чтобы точно узнать, как XCode развертывает ваши файлы.