UIWebView: где загрузить запрос на экране вкладки? viewDidLoad или viewDidAppear?

У меня есть контроллер панели вкладок, одна вкладка содержит веб-представление, загружая запрос, скажем, google.com, когда он загружается (то есть до вызова метода делегата didload веб-просмотра), если я переключаюсь на другую вкладку, а затем вернусь, счетчик все еще работает, но страница никогда не загружается, я предполагаю, что viewDidLoad вызывается только один раз, поэтому я должен поместить код загрузки в viewDidAppear, или есть ли способ решить эту проблему?

Спасибо!


person hzxu    schedule 15.08.2011    source источник


Ответы (1)


Я не понимаю, почему вы хотите обновлять WebView каждый раз, когда он появляется. Но используйте - (void)viewWillAppear:animated

Редактировать:

Хорошо, раз я получил больше информации, я могу дать вам больше информации!

В вашем .h:

BOOL *loaded

в вашем .m:

- (void)viewWillAppear:animated {
     if (loaded == NO) {
         //load the website
     }
 }


- (void)webViewDidFinishLoad:(UIWebView *)webView { 
     [loaded setBool:YES];
 }


- (IBAction)loadWebsite {
    //if the user reloads or loads a new website do this:
    [loaded setBool:NO];
    //reload, or load the new website
}

Чтобы загрузить или перезагрузить UITableView:

 NSString *urlAddress = urltextfield.text;
 NSURL *url = [NSURL URLWithString:urlAddress];
 NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
 [webView loadRequest:requestObj];

Уточнение: я устанавливаю BOOL на YES, если представление загружено, поэтому, когда веб-просмотр завершил загрузку, и пользователь переключается на другую вкладку, а затем WebView не перезагружается. Но если WebView загружен не полностью, BOOl возвращает NO, и WebView будет перезагружен! Когда WebView перезагружается или загружается новый веб-сайт, я устанавливаю BOOL на NO, и это повторяется снова и снова! Обратите внимание, что BOOls по умолчанию НЕТ.

person JonasG    schedule 15.08.2011
comment
Потому что, если запрос не загружен полностью и я переключаюсь на другую вкладку, он перестает загружаться, когда я возвращаюсь на вкладку, он показывает мне пустой веб-просмотр. - person hzxu; 15.08.2011
comment
ОК, затем установите BOOL в YES, когда ваш WebView завершит загрузку, а в вашем методе viewWillAppear сделайте if (yourBool == NO) //reload и установите BOOL в NO, когда вы начнете загружать WebView. Я тоже добавлю это к своему ответу, надеюсь, это поможет. - person JonasG; 15.08.2011
comment
Хорошо, я добавил все, что вам нужно, в свой ответ, пожалуйста, ознакомьтесь с обновленным постом прямо сейчас! - person JonasG; 15.08.2011
comment
Спасибо, но как мне перезагрузить веб-сайт в uiwebview? - person hzxu; 15.08.2011
comment
у вас, вероятно, есть URL-адрес textField, поэтому просто загрузите UIWebView с URL-адресом, введенным в TextField. - person JonasG; 15.08.2011
comment
Я добавил код, как загрузить uitableview. Но УЗНАЙТЕ, как пользоваться Google! Я получил последний фрагмент кода от Google! Просто введите в Google то, что вы ищете (например, руководство по uiwebview, загрузите веб-просмотр ...), это не может быть так сложно !? - person JonasG; 15.08.2011