UIWebView: где загрузить запрос на вкладке экрана? viewDidLoad или viewDidAppear? - PullRequest
0 голосов
/ 15 августа 2011

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

Спасибо!

1 Ответ

0 голосов
/ 15 августа 2011

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

Edit:

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

В вашем .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 не загружен полностью, BOOl возвращает NO, и WebView будет перезагружен! Когда WebView перезагружается или загружается новый сайт, я устанавливаю BOOL в NO, и это повторяется снова и снова! Обратите внимание, что по умолчанию BOOL - это НЕТ.

...