我有一个带有多个(4)导航控制器的iOS应用程序,它们有自己的根目录。
结构是:
NavController(root:登录)
- > TabBarController(主页) - (搜索) - (配置文件)
------> NavController(root:Home)
-------------> TableController
-----------------> DetailController
------> NavController(root:Search)
------> NavController(root:Profile)(这里是注销按钮)
当我进入这些navigationcontrollers
(即Profile
)时,有一个退出按钮,应该带我到初始登录屏幕,如何确保所有导航的所有控制器在加载登录之前已经删除了堆栈?
我已尝试poptorootviewcontroller
,但这只是个人资料页面
答案 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)
}