UINavigationcontroller popViewcontroller 在第二次尝试时不起作用



我的应用程序遇到了一个小问题。这是一个简单的问题,但我无法找出崩溃的原因。

我有一个简单的视图控制器,只有一个网络视图(在故事板中创建和链接)(启用 ARC):

@implementation BPActivateController
@synthesize mainWebView;
- (id)initWithCoder:(NSCoder *)aDecoder
{
    self = [super initWithCoder:aDecoder];
    if (self) {
    }
    return self;
}
- (void)viewDidLoad
{
    NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@/test.php?code=%@", BASE_URL, [[NSUserDefaults standardUserDefaults] objectForKey:@"uniqueIdentifier"]]]; 
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
    [mainWebView loadRequest:requestObj];
    [super viewDidLoad];
}

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    NSString *html = [webView stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML"];
    if ([html rangeOfString:@"<h1>Not Found</h1>"].location != NSNotFound)
    {
        [self.navigationController popViewControllerAnimated:YES];
        NSLog(@"pop the view controller");
    }
}
- (void)viewDidUnload
{
    [self setMainWebView:nil];
    [super viewDidUnload];
}

第一次打开视图时,将调用 popViewControllerAnimation,并将用户重定向回最后一个视图控制器。但是当视图再次打开时,在调用popViewControllerAnimation后给了我一个EXEC_BAD_ACCESS。当我启用僵尸代码时,给我以下跟踪:

2012-06-04 11:51:12.717 actusmedicus[410:707] pop the view controller
2012-06-04 11:51:12.720 actusmedicus[410:707] *** -[BPActivateController respondsToSelector:]: message sent to deallocated instance 0xc6d95b0

我已经尝试了几件事,但仍然不清楚选择器的名称。我怀疑网络视图仍然繁忙。

有人有想法让我回到正轨吗?


[编辑]

通过将 Web 视图的委托设置为 nil,可以修复EXEC_BAD_ACCESS。但真正的问题仍然存在,第一次在UINavigation堆栈上推送视图时,Web视图确实会加载,并且在404之后,popViewControllerAnimation成功执行。但是当我们第二次在UINavigation堆栈上推送相同的视图时(与第一次相同的方式),popViewControllerAnimation不执行任何操作。我已经检查过它是否为零,但这似乎不是问题。

我的第一个想法是它在另一个线程中运行,并且那里不存在 UINavigationcontroller。我在performSelectorOnMainThread的帮助下排除了这种可能性。

最后,我添加了一个按钮来手动调用popViewControllerAnimation,并且每次都有效,那么为什么当我以编程方式调用它时它不起作用呢?

我怀疑网络视图仍然繁忙。

如果是这样,那么在您的 dealloc 中调用 stopLoading 方法。

您还应该在 dealloc 中将委托设置为 nil。

确保是否没有两次切换到目标视图控制器。就我而言,我的代码触发了两次 segue。所以我不得不单击两次后退按钮才能回到我的主控制器。

相关内容

  • 没有找到相关文章

最新更新