iphone - webViewDidStartLoad 方法被多次调用

标签 iphone web

我已完成以下操作:

头文件

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

最佳答案

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

关于iphone - webViewDidStartLoad 方法被多次调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7981526/

相关文章:

email - 您如何提供电子邮件地址来阻止偶然的垃圾邮件发送者(不是垃圾邮件机器人)?

iphone - 更改 UITextFields 集合的属性

iphone - Facebook请求线程问题

iphone - 如何使用 UISearchBar 搜索 MKMapView?

java - 在weblogic管理控制台>部署中,stop命令有什么作用?

html - CSSOM 和 DOM 创建是异步的吗?

arrays - 不同文件的字节数-127至127

javascript - 每次单击按钮时打开顺序链接的脚本

iphone - 将标题设置为已实现的 UINavigationBar

iphone - 应用程序因使用 libsqlite3.dylib 而被拒绝