2011-10-25 3 views
2

IOS 5에서 다음 문에 충돌이 있습니다. 다른 IOS 버전에서도 작동하는 것 같습니다. 시나리오는 viewController에서 모달로보기를 표시하고 취소 버튼을 누르면 아래 코드를 호출하여 모달보기로 자체를 닫습니다. 여기까지는 잘 작동합니다.모달보기를 닫는 동안 IOS 5에서 충돌이 발생했습니다.

그러나 30 초 후에 최신 데이터를 얻기 위해 서버를 호출하여 뷰를 다시 그립니다. "취소"버튼을 누르면보기가 다시 그려지고 난 뒤 충돌이 발생합니다 - IOS 5.0에서만 가능합니다. 이것에 대한 단서가 있습니까?

[self dismissModalViewControllerAnimated:YES]; 

오류 :

enter image description here

+0

같은 문제가 있다고 생각합니다. http://stackoverflow.com/questions/11832981/dismissviewcontrolleranimated-crash-at-ios5 –

답변

1

보십시오.

나는이 것을 link에 잘못 알았다고 생각합니다.

보기를 표시 할 때 문제가 발생하지만 응용 프로그램을 닫을 때 응용 프로그램이 충돌합니다. 자, 문제가 뭐지? 내 코드에서는 popToRootViewControllerAnimated : 호출 바로 옆에 뷰를 표시하고있었습니다. 내가 붙여 넣은 링크에서 볼 수 있듯이, iOS5는 모달 뷰를 표시 할 때 약간의 제한이있는 것으로 보입니다. 링크의 요약으로, 당신은 presentModalViewController을 할 수 없습니다 : 애니메이션 :있는 viewDidLoad 및 viewWillAppear 전에 : 완료 : 내 잘못이 정확히

It turns out that iOS guidelines don't want model view controllers to be presented in viewDidLoad or in viewWillAppear

했다. 이것이 당신에게 일어난다면 당신은 무엇을 할 수 있습니까? 지연 후 모달보기를 표시 할 수 있습니다. 그래서, 대신를 사용 :

[[self navigationController] popToRootViewControllerAnimated:NO]; 
double delayInSeconds = 0.5; 
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC); 
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ 
    [self presentModalViewController:loginNavController animated:YES];; 
}); 

(: afterDelay : 나는 performSelector 가정 : 또한 작동을)

[[self navigationController] popToRootViewControllerAnimated:NO]; 
[self presentModalViewController:loginNavController animated:YES]; 

이를 사용해야합니다 ...

을하고 있는지 확인 delayInSeconds이 큰 viewDidLoad 및 viewWillAppear가 끝나기에 충분합니다. 이것은 매우 정확하고 우아하지는 않지만 미안하지만 적어도 작동합니다.

감사합니다.

+0

에서 도움이되지 않습니다. http://stackoverflow.com/questions/11832981/dismissviewcontrolleranimated-crash -at-ios5 –

+0

방금 ​​편집 한 링크는 나를위한 죽은 링크입니다. –

+0

@PaulCezanne 블로그 게시물이 기각 된 것 같습니다. 그러나 내 대답은 콘텐츠의 발췌입니다. –

0

어딘가에 컨트롤러에 대한 다른 참조가 :

Single stepping until exit from function -[UIWindowController transition:fromViewController:toViewController:target:didEndSelector:] 

이 스레드 추적에 오류의 스크린 샷은? 그렇지 않다면, 당신은 해고에 당신의 물건을 풀어 놓고있다. 그러나 당신은 여전히 ​​그 방법 중 하나 안에있다. 관리자가 제가 내 경우에는 무슨 일이 일어 났는지 설명 할 수 있었다 (마지막 하나가 제거 된) 새로운 코멘트를 추가 할 수 있습니다 경우

+0

나는 그가 [self dismissModalViewControllerAnimated : YES]를하고 있다고 생각합니다. parent viewController에서, 모달보기 콘트롤러 안쪽이 아닙니다. 여러 응용 프로그램에서 같은 문제가 발생했습니다. 이전에는 괜찮 았지만 이제는 simillar가 iOS 5에서 발생합니다. –

+0

내 모달보기에서 [self dismissModalViewControllerAnimated : YES]를 호출합니다. 그리고 내 생각을 다시 그리지 않을 때까지 잘 작동합니다. 뷰가 다시 그려지면 여기에서 충돌이 시작됩니다.그것은 IOS IOS 5.0 이외의 모든 IOS에서 항상 잘 작동합니다. – Abhinav

+0

@ ArturOzierański 네가 옳아, 나쁘다. 그러나 나는 아직도 그것이 좀비 문제 일 수 있다고 생각한다. 좀비 감지 기능을 사용하도록 설정 했습니까? – Sulthan

1

[[super presentingViewController] dismissModalViewControllerAnimated:YES];

+0

이것은 도움이되지 않습니다. – Abhinav

+0

만약 내가 이것을 시도하면 작동하지 않을 것이다. 그러나 이것 [[super presentViewViewController] presentModalViewController : mailer animated : YES]; 작동하지만 여전히 충돌합니다. – Gaurav

+0

이 (가) 도움이되지 않습니다. http://stackoverflow.com/questions/11832981/dismissviewcontrolleranimated-crash-at-ios5 –

관련 문제