2013-08-06 5 views
0

루트에 UITabBarController (세 개의 탭이 있음)가있는 iOS 응용 프로그램이 있습니다. 사용자가 RegisterViewController에서 "등록"버튼을 탭하면UITabBarController에서 UIViewController를 해제 할 수 없습니다.

UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 
RegisterViewController *registerViewController = [mainStoryboard instantiateViewControllerWithIdentifier:@"RegisterView"]; 
[registerViewController setModalTransitionStyle:UIModalTransitionStyleCrossDissolve]; 
[self presentViewController:registerViewController animated:NO completion:nil]; 

이는 일단 QuestionnaireViewController를 제공합니다 : viewDidAppear의 첫 번째 탭에서

: 사용자가 아직 등록하지 않은 경우 나는 RegisterViewController을 제시하기 위해 다음과 같은 한 HTTP 응답이 수신되었습니다.

때 내가 수 있어요 QuestionnaireViewController에 버튼이 기각하는 "제출"에 탭 :

[[self presentingViewController] dismissViewControllerAnimated:YES completion:nil]; 

그때 RegisterViewController가 수신 대기 알림 게시 : 이제

[[NSNotificationCenter defaultCenter] postNotificationName:UserHasCompletedQuestionnaireNotification object:nil]; 

을, 여기 내 문제가 어디에 거짓말 - RegisterViewController 내가 시도하고 그것을 해고 통지를 듣고, 그러나 수 없습니다.

나는 해고의 다양한 함의를 시도 그것과 같은 :

[[self tabBarController] dismissViewControllerAnimated:YES completion:nil]; 
아무것도하지 않는다

및 : 희망이 사람을

attempt to dismiss modal view controller whose view does not currently appear. self = <RegisterViewController: 0x8525ea0> modalViewController = <UINavigationController: 0x74545e0> 
attempt to dismiss modal view controller whose view does not currently appear. self = <UITabBarController: 0x8320060> modalViewController = <RegisterViewController: 0x8525ea0> 

: 다음과 같은 오류를 제공

[[self presentingViewController] dismissViewControllerAnimated:YES completion:nil]; 

내가 여기서 바보 같은 짓을하고 있다고 말할 수있을 것입니다.

감사합니다, 닉

답변

1

대신 : 당신이 동시에 두 컨트롤러를 해제하려면

[[self presentingViewController] dismissViewControllerAnimated:YES completion:nil]; 

, 당신은 알림을 제거 할 수 있으며, 이 일을 (QuestionnaireViewController에서) :

[self.presentingViewController.presentingViewController dismissViewControllerAnimated:YES completion:nil]; 

구조를 올바르게 이해하면 self.presentingViewController.presentingViewController는 RegisterViewController를 제공 한 첫 번째 탭의 컨트롤러 여야합니다. 그것을 기각하는 것은 또한 그것이 제시 한 어떤 것도 기각한다.

+0

나는 그것을 이미 시도했지만, 불행하게도 아무 것도하지 않는다. – Nick

+0

self.presentingViewController.presentingViewController를 로그하면, 그것은 무엇을 제공합니까? – rdelmar

+0

self.presentingViewController = UITabBarController, self.presentingViewController.presentingViewController = null – Nick

0

시도 :

[self dismissViewControllerAnimated:YES completion:nil]; 
+0

[self dismissViewController : 예 완료 : 없음]; 수신기가 제공하는보기 컨트롤러를 닫는 데 사용되므로이 경우 RegisterViewController는 나가기를 원하는보기 컨트롤러이므로 작동하지 않습니다. – Nick

관련 문제