最佳答案
我有一个应用程序,这是一个单视图应用程序。我有一个从根视图控制器链接到所有子控制器的导航控制器。
在每个子控制器中,都有一个注销按钮。我想知道如果我可以有一个单一的功能,我可以调用它将解除所有的控制器已经打开了一路上,无论哪个控制器当前打开时,用户按注销?
我的基本起点:
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。我还有一个问题,就是要知道动态地解雇哪些控制器。
更新 建议使用流行到 root 视图控制器,所以我的尝试是这样的:
func tryLogout(ViewController : UIViewController){
print("do something")
dispatch_async(dispatch_get_main_queue(), {
ViewController.navigationController?.popToRootViewControllerAnimated(true)
return
})
}
这是达到我目的的最好方法吗?