Метод webViewDidStartLoad вызывается несколько раз - PullRequest
4 голосов
/ 02 ноября 2011

Я сделал следующее:

заголовочный файл

 UIWebView *itemWebView;

файл реализации

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
    itemWebView = [[UIWebView alloc] initWithFrame:self.view.bounds];
    itemWebView.delegate = self;

    NSURL *url = [NSURL URLWithString:targetString];
    NSURLRequest *requestObject = [NSURLRequest requestWithURL:url];

    [itemWebView loadRequest:requestObject];
    [self.view addSubview:itemWebView];
    [itemWebView release];
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

- (BOOL) webView:(UIWebView *)_webView shouldStartLoadWithRequest: (NSURLRequest *) request navigationType:(UIWebViewNavigationType)navigationType {
    NSLog(@"ItemLoadinglViewController - shouldStartLoadWithRequest");

    loadingView.hidden = NO;
    itemWebView.hidden = YES;
    return YES;
}

- (void) webViewDidStartLoad: (UIWebView *) _webView {
    NSLog(@"ItemLoadinglViewController - webViewDidStartLoad");


}

- (void) webViewDidFinishLoad: (UIWebView *) _webView { 
    NSLog(@"ItemLoadinglViewController - webViewDidFinishLoad");

    loadingView.hidden = YES;
    itemWebView.hidden = NO;

}

Ну вот как выглядит NSlog:

ItemLoadinglViewController - shouldStartLoadWithRequest
ItemLoadinglViewController - webViewDidStartLoad
ItemLoadinglViewController - shouldStartLoadWithRequest
ItemLoadinglViewController - shouldStartLoadWithRequest
ItemLoadinglViewController - webViewDidStartLoad
ItemLoadinglViewController - webViewDidFinishLoad
ItemLoadinglViewController - shouldStartLoadWithRequest
ItemLoadinglViewController - webViewDidStartLoad
ItemLoadinglViewController - shouldStartLoadWithRequest
ItemLoadinglViewController - webViewDidStartLoad
ItemLoadinglViewController - webViewDidFinishLoad
ItemLoadinglViewController - shouldStartLoadWithRequest
ItemLoadinglViewController - webViewDidStartLoad
ItemLoadinglViewController - webViewDidFinishLoad
ItemLoadinglViewController - shouldStartLoadWithRequest
ItemLoadinglViewController - webViewDidStartLoad
ItemLoadinglViewController - webViewDidFinishLoad

Кто-нибудь знает, почему эти методы вызываются несколько раз? Я использовал это раньше, но каждый метод был вызван только один раз. Почему в этот раз я не могу понять. Спасибо:)

EDIT:

- (void) itemPressed:(id)sender{
    int x = [sender tag];

    ItemLoadingViewController *itemLoadingViewController = [[ItemLoadingViewController alloc] init];
    itemLoadingViewController.targetString = [target objectAtIndex:x];
    [self.navigationController pushViewController:itemLoadingViewController animated:YES];
    [itemLoadingViewController release];
}

1 Ответ

1 голос
/ 02 марта 2012

Переместите код инициализации из viewDidLoad в init & check.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...