UIWebView не вернется после загрузки HTML в iOS - PullRequest
5 голосов
/ 18 января 2012

У меня проблема в приложении для iPhone: у меня есть webView, который сначала загружается со строкой HTML. После того, как пользователь щелкнет ссылку и загрузит запрошенную страницу, webView не вернется, когда я вызову метод [UIWebView goBack]; Полагаю, webView не кэширует строку HTML. Можно ли как-то сделать, чтобы webView кешировал мою HTML-строку без необходимости сохранять ее в строке NSString?

Ответы [ 3 ]

6 голосов
/ 10 января 2013

Вы можете использовать свойство canGoBack, и если вы не можете вернуться назад, перезагрузите UIWebView с оригинальным HTML.Если пользователь переместился вперед по ссылкам, свойство canGoBack вернет YES, и goBack может быть инициирован в UIWebView._HtmlString - это переменная-член, которая устанавливается, когда UIWebView инициализируется с использованием строки HTML.-rrh

- (void)goBack
{
    if (_htmlString && ![_browserWebView canGoBack]) {
        [_browserWebView loadHTMLString:_htmlString baseURL:nil];
        return;
    }
    [_browserWebView goBack];
}
1 голос
/ 12 марта 2015

Попробуйте создать NSURLRequest из URL файла и использовать loadRequest вместо loadhtmlString

NSURL *htmlFileUrl = [[NSBundle mainBundle] URLForResource:@"index" withExtension:@"html"];
NSURLRequest *localRequest = [NSURLRequest requestWithURL:htmlFileUrl];
self.webView.delegate = self;
[self.webView loadRequest:localRequest];
0 голосов
/ 18 января 2012

Похоже, что ваша переменная webview неправильно связана с экземпляром webview, который вы используете. Точка останова на этом вызове и проверьте, является ли ваша переменная webView 'nil'.

Если это так, убедитесь, что ваше webView в файле XIB связано с переменной IBOutlet в Интерфейсном Разработчике. Это распространенная ошибка, которую я обычно забываю при разработке новой страницы.

В этом руководстве рассказывается о том, как создавать интерфейсы с помощью Интерфейсного конструктора, с которым, я уверен, вы знакомы, но для тех, кто не знаком, это также полезно. У него есть несколько хороших скриншотов, которые помогают проиллюстрировать то, что я имею в виду, когда я «связываю» лучше, чем я, набрав «щелкнуть по маленькому значку + и перетащить маленькую штуку на элемент пользовательского интерфейса»:)

http://www.icodeblog.com/2008/07/30/iphone-programming-tutorial-connecting-code-to-an-interface-builder-view/

EDIT

Единственное, о чем я могу думать, это то, что вы перезаписываете свою переменную webView, переинициализируя ее где-то (она уже инициализирована XIB), и поэтому вы вызываете goBack для веб-просмотра, который не существует на экран.

...