1

내 응용 프로그램에 약간의 문제가 발생했습니다. 그것은 간단한 문제이지만, 나는 충돌의 원인이 무엇인지 알 수 없다. UINavigationcontroller 두 번째 시도에서 popViewcontroller가 작동하지 않습니다.

나는 단지 웹보기 (작성 및 스토리 보드에 연결) (ARC 사용)와 간단한의 ViewController 있습니다

@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 

을하지만 여전히 호출되고 무엇을 선택 명확하지 않다. 웹뷰가 여전히 바쁘다 고 생각합니다.

누구나 나를 궤도에 진입시키는 아이디어가 있습니까?


EXEC_BAD_ACCESS는 웹보기의 위임을 삭제를 설정하여 고정

[EDIT]. 하지만 실제 문제는 여전히 UINavigation 스택에 뷰가 푸시되고 웹 뷰가로드되고 404 후에 popViewControllerAnimated가 성공적으로 실행됩니다. 그러나 UINavigation 스택에서 동일한 뷰를 두 번째로 푸는 경우 (처음과 같은 방식으로) popViewControllerAnimated는 아무 것도하지 않습니다. 나는 그것이 문제가되는 것 같지 않다. 그러나 만약 그것이 문제가되지 않는다면 체크했다.

나의 첫 번째 아이디어는 다른 스레드에서 실행되었고 거기에 UINavigationcontroller가 존재하지 않는다는 것이었다. 나는 performSelectorOnMainThread의 도움으로 그 가능성을 배제했다.

마지막으로 popViewControllerAnimated를 수동으로 호출하는 단추를 추가했는데 그 때마다 작동하므로 프로그래밍 방식으로 호출 할 때 왜 작동하지 않습니까?

답변

0

나는 웹보기는 여전히 바쁜 의심 ..

것은 그래서 다음의 dealloc에 ​​stopLoading 메소드를 호출합니다.

또한 dealloc에서 델리게이트를 nil로 설정해야합니다.

+0

popViewControllerAnimated를 호출하기 전에 stopLoading 메서드를 시도했지만 문제가 아직 남아 있습니다. 프로젝트가 ARC이므로 dealloc을 호출 할 필요가 없습니다 –

+0

delgate를 Nil로 설정하면 BAD_ACCESS 메시지가 수정되지만 실제 문제는 여전히 있습니다. 거기, 어떤 아이디어? –

0

대상보기 컨트롤러에 두 번 연속하지 않는지 확인하십시오. 내 경우에는 코드가 segue를 두 번 실행했습니다. 그래서 메인 컨트롤러로 돌아 가기 위해 두번 뒤로 버튼을 클릭해야했습니다.

관련 문제