我有一个加载UIWebView的应用程序。这很有效。用户可以单击Web视图中的链接,然后创建新的视图控制器/ Web视图以加载链接,这也很有效。
什么做得不好,有时候(1/4或许)当我回到初始网页视图时,视图是空白的。
控制器未被释放,并且未在两者之间接收内存警告。我完全不解。
任何人都知道发生了什么,尤其是如何修复它?
以下是与控制器有关的任何方法:
初始控制人:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
if (navigationType == UIWebViewNavigationTypeLinkClicked)
{
WebView * wv = [[WebView alloc] initWithNibName:@"WebView" bundle:nil];
UIBarButtonItem *backBar = [[UIBarButtonItem alloc] initWithTitle:@"Back to the Article" style:UIBarButtonItemStyleDone target:nil action:nil];
self.navigationItem.backBarButtonItem = backBar;
[backBar release];
[[UIAppDelegate navigationController] pushViewController:wv animated:YES];
[[wv webView] loadRequest:request];
[wv release];
}
return NO;
}
else
return YES;
}
其他控制器(WebView):
- (void)viewDidLoad {
[super viewDidLoad];
[webView setDelegate:self];
}
答案 0 :(得分:1)
你确定它没有收到内存警告吗?
发生这种情况可能并不明显。
答案 1 :(得分:0)
我有一个类似的问题,我通过使用解决了:
[self.webView loadHTMLString:@"HTML GOES HERE" baseURL:[NSURL URLWithString:@""]];
而不是:
[self.webView loadHTMLString:@"HTML GOES HERE" baseURL:nil];
显然,UIWebView正在清除
[[self navigationController] presentModalViewController:myModalViewController animated:YES];
在为UIWebView的-loadHTMLString:baseURL:方法的baseURL:参数传递nil时调用了。升级到iOS 4.3 SDK后出现此错误。