2012-01-18 2 views
4

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

ответ

5

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

- (void)goBack 
{ 
    if (_htmlString && ![_browserWebView canGoBack]) { 
     [_browserWebView loadHTMLString:_htmlString baseURL:nil]; 
     return; 
    } 
    [_browserWebView goBack]; 
} 
+0

как вы устанавливаете htmlString? – Edu

0

Это звучит так, будто ваша переменная webview неправильно связана с экземпляром веб-представления, который вы используете. Точка останова при этом вызове и проверьте, является ли ваша переменная webView «ноль».

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

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

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

EDIT

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

+0

Oh, и если вам интересно, почему IOS не поднимать вонь при вызове метод на 'nil', это потому, что nil не является NULL и просто возвращает «nil» при вызове – Robotnik

+0

Спасибо за ответ! Я подтвердил, и мои IBOutlets в порядке. Что это может быть? –

0

Попытка создать 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]; 
Смежные вопросы