Несколько UIWebViews, как я могу отслеживать webViewDidFinishLoad для обоих? - PullRequest
1 голос
/ 05 апреля 2011

Я пробовал:

- (void) webViewDidFinishLoad:(UIWebView *)webView1{

}
- (void) webViewDidFinishLoad:(UIWebView *)webView2{

}

Ошибки в том, что я не могу переопределить тот же метод.

Если мне нужно использовать тот же метод, мне нужно найти способ отличить один веб-вид от другого, как мне это сделать?

Приветствия

Ответы [ 3 ]

4 голосов
/ 05 апреля 2011
- (void) webViewDidFinishLoad:(UIWebView *)webview{
     if ( webview == self.webview1 )
     {
          // in case of webview 1
     } else if ( webview == self.webview2 ) {
          // in case of webview 2
     } else {
          NSLog(@"webview %@ was not wired to a property of %@",webview,self);
     }
}

и добавьте webview1 и webview2 в качестве свойств вашего контроллера.(т.е. вам нужна строка @property и строка @synthesize)

1 голос
/ 05 апреля 2011

Причина, по которой - (void) webViewDidFinishLoad:(UIWebView *)webView передает веб-просмотр, заключается в том, что вы знаете, какой веб-просмотр завершил загрузку. У вас есть несколько вариантов.

  1. Создайте переменные класса для webview1 и webview2 и сравните их с webview.
  2. Отметьте веб-просмотры, чтобы вы знали, какой из них

1.

//SomeController.h
@interface SomeController : UIViewController
    UIWebView *webView1;
    UIWebView *webView2;
@end

//SomeController.m
...
- (void) webViewDidFinishLoad:(UIWebView *)webView
{
    if(webView == webView1) { ... }
    else if(webView == webView2) { ... }
}
...

2.

-(void)viewDidLoad
{
    webView1.tag = 1;
    webView2.tag = 2;
}

- (void) webViewDidFinishLoad:(UIWebView *)webView
{
    if(webView.tag == 1) { ... }
    else if(webView.tag == 2) { ... }
}
0 голосов
/ 05 апреля 2011

Вам необходимо сохранять ссылку на них, когда вы создаете их программно ИЛИ добавляете выходы для них из Interface Builder.Таким образом, вы получите переменные экземпляра, которые вы можете сравнить с аргументом метода webView, чтобы узнать, какая из них закончила загрузку.Для этого вам нужен только один метод, и вы можете прочитать тему .

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
   if (webView == webView1)
   {
      // handle webView1's loading
   }
   else if (webView == webView2)
   {
      // handle webView2's loading
   }
}
...