2012-05-02 6 views
2

RegistrationViewController 및 LoginViewController가 있습니다.RootViewController를 닫으시겠습니까?

LoginViewController는 내 InitialViewController/RootViewController입니다.

등록 버튼을 등록하고 클릭하면 자동으로 MainViewController로 이동합니다. 내가 로그 아웃 버튼을 누르면, 그것은 [Self dismissModalViewController animated : YES]를 사용하기 때문에 RegistrationViewController로 해산됩니다.

- (IBAction)logoutPressed:(id)sender { 
    [self dismissModalViewControllerAnimated:YES]; 
    } 

로그 아웃 버튼을 누르면 어떻게 LoginViewController를 닫을 수 있습니까?

답변

5

UINavigationController 메서드 -popToRootViewControllerAnimated:을 사용할 수 있습니다. 에서 설명한대로

- (IBAction)logoutPressed:(id)sender { 
    [self.navigationController popToRootViewControllerAnimated:YES]; 
} 

대신 여러 모달 전망에 대해 이야기하는 경우

는 위에 다른 하나를 발표하고, 당신은 -dismissViewControllerAnimated:completion: 또는 스택에서 가장 낮은 하나 오래된 -dismissModalViewControllerAnimated:을 보내 그들 모두를 해제 할 수 문서 :

연속으로 사용하면 현재 여러 뷰 컨트롤러, 따라서되게 뷰 컨트롤러의 스택을 구축 낮은 스택에서보기에 컨트롤러를이 메서드를 호출은 즉시 아이 뷰 컨트롤러를 일축하면 모든 뷰 컨트롤러 그 자식을 스택 위에 올려 놓습니다. 당신은 UINavigationController를 사용하여보기 컨트롤러의 스택을 사용하는 경우 이러한 상황이 발생 이 만 최상위보기 애니메이션 패션

+1

이 맞습니다.이 방법을 사용하여 해제 할 수 있습니다. – vishiphone

+0

sry guys 나는 Login과 Registration이 Modalview라는 것을 잊어 버렸습니다. 이 코드는 작동하지 않습니다. – Bashud

+0

@Bashud 모달 뷰 컨트롤러의 경우 수행 할 작업을 설명하기 위해 편집되었습니다. 그러나 귀하의 질문은 '푸시 (push)'라고 말했고 이는 푸시가 네비게이션 스택에 푸시되었음을 의미합니다. 그래서 처음에 네비게이션 스택에서 터지는 것을 집중적으로 다루었습니다. – Caleb

3
-(void)dismissToRootViewController 
{ 
    UIViewController *vc = self; 
    while (vc.presentingViewController) { 
     vc = vc.presentingViewController; 
    } 
    [vc dismissViewControllerAnimated:YES completion:nil]; 
} 
0

에서 기각되고, 다음과 같은 방법을 사용하는 것이 현명하다.

1. Pop the current top ViewController use 
[[self navigationController] popViewControllerAnimated:YES]; 

2. Pop to RootViewController use 
[[self navigationController] popToRootViewControllerAnimated:YES]; 

3. For that matter popping to any ViewController use 
[[self navigationController] popToViewController:viewController animated:YES]; 
2

사용해보세요.

[[[UIApplication sharedApplication] keyWindow].rootViewController dismissViewControllerAnimated:YES completion:nil]; 
+0

답변으로 표시해야합니다. – Mashhadi

관련 문제