2012-10-22 17 views
6

私はiOSでストーリーボードを使用しています。最初の画面はログイン画面です。ユーザーがログアウトするかログアウトすると、彼は深い階層の画面上にいる可能性があります。初期ストーリーボードに戻るログアウト時にViewController

例:ログインビューコントローラ=>モーダルビューコントローラ=>タブバーコントローラ=> navコントローラ=>ビューコントローラ=>ビューコントローラ。私は一番上のビューコントローラから一番下のビューコントローラに戻って行きたいと思っています。

編集:ここではビュー階層の図があります:enter image description here

ありがとう!

答えて

2

これはすべてがナビゲーションスタックにプッシュされたと仮定すると動作するはずです:

[self.navigationController popToRootViewControllerAnimated:YES]; 
+0

それがうまくいかなかった理由を示すためにダイアグラムで更新しました。 –

+0

ああ、いいダイアグラムを参照してください。また、NSNotificationCenterを使用してログアウト時に通知を送信する必要があります。あなたの最初のモーダルビューコントローラは、通知を受信して​​それを受信したときに却下することができます。 –

5

私が動作しているようだUIViewControllersのカテゴリを書きました:

- (void) popToInitialViewController 
{ 
    UIViewController *vc; 
    if (self.navigationController != nil) { 
     vc = self.navigationController; 
     [self.navigationController popToRootViewControllerAnimated:NO]; 
     [vc popToInitialViewController]; 
    } 
    else if (self.tabBarController != nil) { 
     vc = self.tabBarController; 
     [vc popToInitialViewController]; 
    } 
    else if (self.presentingViewController != nil) { 
     vc = self; 

     while (vc.presentingViewController != nil) 
      vc = vc.presentingViewController; 

     [vc dismissModalViewControllerAnimated:NO]; 

     [vc popToInitialViewController]; 
    } 
} 

コメントが理解している:)

関連する問題