【问题标题】:webViewDidStartLoad method gets called multiple timeswebViewDidStartLoad 方法被多次调用
【发布时间】:2011-11-02 13:55:04
【问题描述】:

我做了以下事情:

头文件

 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

有人知道为什么这些方法会被多次调用吗?我以前用过这个,但是每个方法只调用一次。为什么这次不一样我不知道。谢谢:)

编辑:

- (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];
}

【问题讨论】:

  • 你能展示一下你是如何加载视图控制器的吗,看起来视图确实加载了不止一次。
  • 还有可能是您的 URL 使用了重定向吗?这可以解释为什么 webview 加载多次
  • 我用代码编辑了我的问题。请看!
  • viewDidLoad 只被调用一次。我放了一条消息,它只显示了一次!
  • 我认为是的。那么检查 webView 何时最终加载的解决方案是什么?

标签: iphone web


【解决方案1】:

将您的初始化代码从 viewDidLoad 移至 init & check。

【讨论】:

    猜你喜欢
    • 2013-03-29
    • 1970-01-01
    • 2011-10-28
    • 1970-01-01
    • 2016-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多