我遇到了一個小問題,我的應用程序。這是一個簡單的問題,但我找不到崩潰的原因。UINavigationcontroller popViewcontroller不能在第二次嘗試
我有一個簡單的ViewController只有一個網頁視圖(創建和故事板鏈接)(啓用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];
}
第一次視圖中打開popViewControllerAnimated被調用,用戶被重定向回最後一個viewcontroller。但是當視圖再次打開時,在調用popViewControllerAnimated之後給我一個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
我已經試過幾件事情,但仍然是不明確的是被稱爲什麼選擇。我懷疑webview仍然很忙..
任何人有一個想法,讓我回到正軌?
[編輯]
的EXEC_BAD_ACCESS通過設置web視圖的先nil代表固定的。 但真正的問題仍然存在,第一次將視圖推入UINavigation堆棧時,Web視圖確實會加載,並且在404成功執行popViewControllerAnimated之後。但第二次我們在UINavigation堆棧上推送相同的視圖(與我們第一次相同)popViewControllerAnimated不執行任何操作。我已檢查,如果它是零,但似乎並沒有問題..
我的第一個想法是,它運行在另一個線程和UINavigationcontroller不存在那裏。我在performSelectorOnMainThread的幫助下排除了這種可能性。
最後我添加了一個按鈕來手動調用popViewControllerAnimated,並且每次都有效,所以爲什麼當它以編程方式調用它時不起作用?
在調用popViewControllerAnimated之前,我嘗試了stopLoading方法,但問題仍然存在..該項目是ARC,因此我不必調用dealloc –
將delgate設置爲零修復BAD_ACCESS消息,但真正的問題仍然存在那裏有什麼想法? –