2012-05-02 11 views
2

私はRegistrationViewControllerとLoginViewControllerを持っています:RootViewControllerを閉じる?

LoginViewControllerは私のInitialViewController/RootViewControllerです。

私はregistrateとRegistrate-ボタンをクリックすると、それはMainViewControllerに自動的にプッシュします。私が[ログアウトボタンを押すと、それはRegistrationViewControllerに却下されました。これは[self dismissModalViewController animated:YES]を使用しているためです。

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

ログアウトボタンを押した場合、どうすればLoginViewControllerを閉じることができますか?

答えて

5

あなたはUINavigationControllerメソッド-popToRootViewControllerAnimated:を使用することができます。

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

あなたの代わりに別の上に1を提示されているいくつかのモーダルビューの話をしている場合で説明したように、あなたは、スタック内の最低一つに-dismissViewControllerAnimated:completion:歳以上-dismissModalViewControllerAnimated:を送信することにより、それらのすべてを却下することができますがドキュメント:

連続してお存在するいくつかのビューコントローラ、したがって、提示ビューコントローラの スタックを構築下スタック内のビューに コントローラを、このメソッドを呼び出すには、その直接の子ビュー コントローラを却下した場合、すべてのビューコントローラスタック上のその子の上にあります。あなたはUINavigationControllerを使用してビューコントローラのスタックを使用している場合、この問題が発生した は、唯一の最上位のビューは、アニメーション ファッション

+1

が正しいです。この方法を使用して無効にすることができます。 – vishiphone

+0

sry guys私は、ログインと登録がModalviewだと言及するのを忘れていました。したがって、このコードは機能しません。 – Bashud

+0

@Bashudモーダルビューコントローラの場合に何をすべきかを説明するために編集されました。しかし、あなたの質問は「プッシュ」と言いました。これは、それらがナビゲーションスタックにプッシュされたことを意味します。だから私は最初にナビゲーションスタックから飛び出すことに焦点を当てたのです。 – 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

関連する問題