2011-11-26 3 views
0

모달보기 컨트롤러가 올바르게 표시되고 닫히는 데 문제가 있습니다. 기본적으로 모달로 표시된 로그인 창이 있으며 표시하려는 모든 데이터가 데이터베이스에서로드 된 후이를 닫으 려합니다. 나는 LoginViewController 클래스 내에서 모달보기 컨트롤러를 닫을 수 없습니다.

[self dismissModalViewControllerAnimated:YES]

를 호출하는 경우 완벽하게 잘 작동하지만 난 내 DataManager에 클래스 내에서

[[mainController modalViewController] dismissModalViewControllerAnimated:YES]를 호출하면 나는 성공적 아무 일도 발생하지 않는 데이터를 가져온 후. [mainController modalViewController]이 locationManager 클래스를 가리키기 때문에 매우 혼란 스럽습니다.

아무도 왜 이것이 작동하지 않는가에 대한 아이디어가 있습니까? 그게 중요하다면 나는 iOS 4를 프로그래밍하고있다.

감사합니다.

+0

작동

- (void)dismissSelf { [self dismissModalViewControllerAnimated:YES]; } - (void)receiveDismissNotification:(NSNotification *) note { [self performSelectorOnMainThread:@selector(dismissSelf) withObject:nil waitUntilDone:NO]; } 

: 그래서 같은 통지하고 전화 dismissModalView 컨트롤러를 사용하여 종료? – hypercrypt

+0

저는 다음을 사용하고 있습니다 : [_splitViewController presentModalViewController : loginViewController animated : YES]; applicationDdFinishLaunchingWithOptions에서 – FreaknBigPanda

답변

3

확인을 표현하기위한

그래서 나는이 알아 냈어. 기본적으로 어떤 일이 발생했는지는 [self dismissModalViewController] 호출이 다른 스레드에서 발생했는데 어떤 이유로 든 개체가 해제 메시지를 제대로 처리하지 못했다는 것을 의미합니다. 어떻게 당신이 그것을 제시하는

3

모달보기 컨트롤러를 닫는 적절한 방법은이를 제시 한보기 컨트롤러에서 -dismissModalViewControllerAnimated:을 호출하는 것입니다. 따라서 [_splitViewController dismissModalViewControllerAnimated:YES];이어야합니다. 귀하의 코멘트에서

, 당신은 주 스레드에서 -dismissModalViewControllerAnimated:를 호출 할 필요가, 당신과 같이이 작업을 수행 할 수 있습니다

dispatch_async(dispatch_get_main_queue(), ^{ 
    [_splitViewController dismissModalViewControllerAnimated:YES]; 
}); 
+0

나는 그것을 시도 : [mainController dismissModalViewControllerAnimated : 예] 그리고 그것은 작동하지 않습니다 ... – FreaknBigPanda

+0

응용 프로그램에서 mainController 설정 옵션과 함께 시작 마쳤습니다 : [[DataStore defaultStore] setMainController : _splitViewController]; – FreaknBigPanda

+0

사실이 아닙니다. 모달 뷰 컨트롤러를 닫는 적절한 방법은 모달 뷰 컨트롤러 자체에서 해당 메서드를 호출하는 것입니다. docs에있는 – Steve

1

을 코드

[self dismissModalViewControllerAnimated:YES]; 

이 코드는 다음과 같은 모델 뷰 컨트롤러 사용을 닫으려면 ios 5에서도 작동합니다. 모델 뷰 컨트롤러에게

if (self.viewController!=nil) 
{ 
     //sanity check for view controller 
     [self.viewController SOMEVIEW animated:YES]; 
} 
관련 문제