我有一个应用程序是一个单一的视图应用程序.我有一个导航控制器链接到根视图控制器的所有子控制器.
在每个子控制器中,我有一个注销按钮.我想知道如果我可以有一个单一的功能,我可以打电话,将关闭所有已经打开的控制器,无论当用户按下注销时,当前打开什么控制器?
我的基本开始:
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.而且我还有一个问题,即知道哪些控制器动态地关闭.
任何帮助谢谢!
更新
已经建议弹出到根视图控制器.所以我的尝试是这样的:
func trylogout(ViewController : UIViewController){ print("do something") dispatch_async(dispatch_get_main_queue(),{ ViewController.navigationController?.popToRootViewControllerAnimated(true) return }) }
这将是实现我以后的最佳方式吗?
解决方法
你可以拨打:
self.view.window!.rootViewController?.dismissViewControllerAnimated(false,completion: nil)
应该将根视图控制器上的所有视图控制器关闭.