【发布时间】: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 何时最终加载的解决方案是什么?