从所有堆栈中删除所有控制器

时间:2016-08-24 18:07:59

标签: ios uinavigationcontroller uitoolbar

我有一个带有多个(4)导航控制器的iOS应用程序,它们有自己的根目录。

结构是:

  

NavController(root:登录)

     

- > TabBarController(主页) - (搜索) - (配置文件)

     

------> NavController(root:Home)

     

-------------> TableController

     

-----------------> DetailController

     

------> NavController(root:Search)

     

------> NavController(root:Profile)(这里是注销按钮)

当我进入这些navigationcontrollers(即Profile)时,有一个退出按钮,应该带我到初始登录屏幕,如何确保所有导航的所有控制器在加载登录之前已经删除了堆栈?

我已尝试poptorootviewcontroller,但这只是个人资料页面

1 个答案:

答案 0 :(得分:0)

您可以使用NSNotificationCenter来处理此问题。

当用户退出时,使用以下网址向您的应用发布本地通知:

NSNotificationCenter.defaultCenter().postNotificationName("kLogOut", object: self)

然后在每个选项卡的根视图控制器中,注册以侦听该通知,并实现选择器功能:

NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(YourViewController.logOutNotificationAction), name: "kLogOut", object: nil)

func logOutNotificationAction() {
    self.navigationController?.popToRootViewControllerAnimated(false)
}