2017-07-13 18 views
3

マイビューContollers ログイン - >メインメニュー - > A - > B - > C - > D特定のビューコントローラにビューコントローラを閉じ

私はすべてのビューコントローラをdimiss、メインメニューに戻るにはどうすればよいです私は

func logout{ 

    self.view.window!.rootViewController?.dismissViewControllerAnimated(false, completion: nil) 
} 

ログインするために戻って取り、次をやっている私の見解コントローラからログアウトするため

は、今私がやっている何本

です
class AppDelegate: UIResponder, UIApplicationDelegate { 
    var viewControllerStack: [BaseViewController]! 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 
    super.appDelegateBase.viewControllerStack.append(self) 
} 

func go_To_MainMenu(){ 
    var countOfNumberOfViewCOntrollers = self.appDelegateBase.viewControllerStack.count 

     switch countOfNumberOfViewCOntrollers{ 

      self.presentingViewController?.presentingViewController?.dismissViewControllerAnimated(true, completion: nil) 
      break; 
     case 2: 

      self.presentingViewController?.presentingViewController?.presentingViewController?.dismissViewControllerAnimated(true, completion: nil) 
      break; 
    } 
} 
+0

セグを使用していますか?その場合、[unwind segue](https://stackoverflow.com/questions/12561735/what-are-unwind-segues-for-and-how-do-you-use-them)を使用して、 – Paulw11

答えて

3

は、単に同じ方法を使用することができますビューコントローラ。そのようにして、UINavigationControllerのpopToViewController(_:animated:)を使用して、ナビゲーションスタック内の任意のビューコントローラにポップすることができます。

0

RootViewControllerを使用する代わりにunwind segueを使用してください。 巻き戻しを使用すると、任意のViewControllerに戻ることができます。 DismissViewControllerは常にコントローラをNavigationControllerから送ります。あなたがプッシュするUINavigationControllerを使用することができ却下/ /ポップを提示する代わりに

self.view.window!.rootViewController?.presentedViewController?.dismissViewControllerAnimated(true, completion: nil) 
0

のMainMenuへ:あなたのMainMenu VCは常にあなたのログインVCの後に来る場合

0

MainMenuがrootViewControllerでない場合は、Unwind Segueを使用できます。この記事を見て、それが助けてくれることを願ってください。 Unwind Segue with Swift

関連する問題