iPhone SDK:UIWebView
-
08-07-2019 - |
Вопрос
Я работаю над приложением, которое использует UIWebView для отображения файлов справки.WebView живет в своем собственном представлении DocViewController... когда он называется
- (void)viewDidLoad {
метод использует
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath: [[NSBundle mainBundle] pathForResource:docPage ofType:@"html"]isDirectory:NO]]];
чтобы загрузить нужную страницу документа.Однако после загрузки первой страницы представление становится статическим, и новые страницы не загружаются при изменении docPage и переключении представления.Есть ли способ очистить webView, чтобы новые страницы загружались по запросу?
Редактировать:
Первый ответ меня смущает.Как и процедура ниже, работает.Просто это работает только один раз.После первой загрузки представления оно не меняется при повторном включении этого представления и изменении запрошенной HTML-страницы.Представление всегда отображает первую запрошенную HTML-страницу и не загружает новые запросы.
- (void)viewDidLoad {
docPage = [NSString stringWithFormat: @"%d", hexpage];
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[NSBundle mainBundle] pathForResource:docPage ofType:@"html"]isDirectory:NO]]];
}
Решение
viewDidLoad
вызывается только один раз, если только представление не освобождено и его не нужно перезагрузить.Обычно это происходит только тогда, когда контроллер представления получает предупреждение о нехватке памяти.Вместо viewDidLoad
, попробуйте вставить этот код viewWillAppear:
, который вызывается каждый раз, когда представление отображается на экране.
Другие советы
Попробуйте использовать
- (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL
передача объекта NSURL в каталог, содержащий ваш HTML в качестве baseURL, и загрузка строки HTML с чем-то вроде
NSString *path = [[NSBundle mainBundle] pathForResource:@"myfile"
ofType:@"html"];
NSString *html = [NSString stringWithContentsOfFile:path
encoding:NSUTF8StringEncoding
error:nil];
Редактировать:Кроме того, убедитесь, что ваши гиперссылки не пытаются открыться в новом окне с чем-то вроде target="_blank", ваш веб-просмотр не откроет их.