我有一个应用程序是一个单一的视图应用程序.我有一个导航控制器链接到根视图控制器的所有子控制器.
在每个子控制器中,我有一个注销按钮.我想知道如果我可以有一个单一的功能,我可以打电话,将关闭所有已经打开的控制器,无论当用户按下注销时,当前打开什么控制器?
我的基本开始:
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)
应该将根视图控制器上的所有视图控制器关闭.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。