当前位置:  开发笔记 > Android > 正文

当我在加载webview时按下我的U -avigation栏,我的应用程序崩溃了......?

如何解决《当我在加载webview时按下我的U-avigation栏,我的应用程序崩溃了?》经验,为你挑选了1个好方法。

我的iphone应用程序中有一个带导航栏的视图.导航栏上有一个后退按钮,可以显示上一个视图.在视图中是webview.如果在用户按导航栏上的后退按钮时加载webview,则应用程序崩溃并显示错误消息:

[WebViewController respondsToSelector:]: message sent to deallocated instance

我假设我在视图卸载时释放了一些东西.我相信我的viewWillDisapear方法负责停止加载webview ...但是,当我在视图未完全加载时按回来时,它会崩溃.

这似乎发生在我让视图完成加载大约20%的时间 - 并且只有在页面完成加载后我真的很快按下后退按钮.

这是我认为在这个shinanigans期间运行的代码....:

- (void)viewDidLoad {
     [super viewDidLoad];
     webView.scalesPageToFit = YES;
    [webview loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString: url]]];
    [addressBar setText:url];
}

然后在加载webview时:

- (void)webViewDidStartLoad:(UIWebView *)webView {

if (first) {
   //mtns is a uiimageview
    mtns.alpha = .8;
    first = NO;
}
[activityIndicator startAnimating];
}

并在提出建议后,我添加了这个方法:

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    [self.webView stopLoading];
    self.webView.delegate = nil;
}

我不知道它为什么会崩溃,所以我有点不知所措

谢谢,

[R



1> Mark Adams..:

您可以覆盖-viewWillDisappear:以停止加载UIWebView并将委托设置为nil.

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    [self.webView stopLoading];
    self.webView.delegate = nil;
}

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有