我有一个应用程序,这是一个单视图应用程序.我有一个从根视图控制器链接到所有子控制器的导航控制器.
在每个子控制器中,我都有一个注销按钮.我想知道我是否可以调用一个函数,该函数将取消一路打开的所有控制器,无论用户按下注销时当前打开的是哪个控制器?
我的基本出发点是:
func tryLogout(){
self.dismissViewControllerAnimated(true, completion: nil)
let navigationController = UINavigationController(rootViewController: UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("LoginViewController") )
self.presentViewController(navigationController, animated: true, completion: nil)
}
我正在寻找执行这项任务的最有效的方法.我将把我的注销功能放在一个单独的utils文件中,但是我不能使用self.我仍然有一个问题,那就是知道应该动态关闭哪些控制器.
Update
func tryLogout(ViewController : UIViewController){
print("do something")
dispatch_async(dispatch_get_main_queue(), {
ViewController.navigationController?.popToRootViewControllerAnimated(true)
return
})
}
这是实现我想要的东西的最好方式吗?