当前位置: 首页 > 面试题库 >

单一功能可消除所有打开的视图控制器

咸弘雅
2023-03-14
问题内容

我有一个应用程序,它是一个单视图应用程序。我有一个从根视图控制器链接到所有子控制器的导航控制器。

在每个子控制器中,我都有一个注销按钮。我想知道是否可以有一个我可以调用的函数,该函数将关闭沿途打开的所有控制器,无论用户按下注销时当前打开了哪个控制器?

我的基本开始:

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?.dismiss(animated: false, completion: nil)

应该关闭根视图控制器上方的所有视图控制器。



 类似资料:
  • 问题内容: 我正在构建一个带有angular + ionic的应用程序,该应用程序在底部使用一个经典的三按钮菜单,其中包含三个ion- tabs。用户单击选项卡时,该模板通过ui-router打开。 我有这样的状态: 在模板中,我执行以下操作: 我知道我可以在控制器中编写doSomething()函数,并在那里手动调用它。那给了我同样的问题。每当有人打开该视图时,我似乎都无法弄清楚如何调用doSo

  • 我有一组视图和一个注销按钮,它将用户注销并将他们带到第一个视图控制器(一个登录/注册屏幕)。我试着用模态表示来做这件事,但它破坏了我的导航,而且我不能使用pop到根视图控制器,因为它不是根视图控制器--我至少有2个导航控制器的深度。我怎么可能只显示第一个呢?我基本上需要它的行为,就好像应用程序刚刚重新启动。解开塞格会有什么帮助吗?谢谢

  • 问题内容: 如何从视图调用Codeigniter控制器功能?当我在控制器中调用该函数时,获得404页面。 问题答案: Codeigniter是一个MVC(模型-视图-控制器)框架。从视图中调用函数确实不是一个好主意。该视图应仅用于演示,并且在进入控制器和模型中的视图之前,应先进行所有逻辑处理。 这很简单,但是确实提供了一个很好的方法。 我希望这有帮助!

  • 问题内容: 我正在尝试使用AngularJS 的 ng-click 功能来切换视图。我将如何使用下面的代码来做到这一点? index.html controller.js 问题答案: 为了在不同的视图之间切换,您可以直接在index.html文件中更改window.location(使用$ location服务!)。 Controller.js 并配置路由器以根据位置切换到不同的部分(如此处所示h

  • 我找到了一些关于这个问题的帖子,但是没有一个能解决我的问题。 说像我已经... ViewControlllerA ViewControlllerB 我试图将ViewControlllerB添加为ViewControlllerA中的子视图,但是,它抛出了一个错误,如""。 下面是代码。。。 视图控制器 ViewControllerB只是一个带有标签的简单屏幕。 视图控制器B 编辑

  • 问题内容: 我知道这是一个非常基本的问题。 但是您能否告诉我 所有可用的选项 , 从Razor View 调用“ 控制操作方法” [通常是任何服务器端例程] , 以及哪种 情况最适合 用于哪种 情况 。 谢谢。 问题答案: 方法1: 使用jQuery Ajax Get调用( 部分页面更新 )。 适用于需要从数据库检索jSon数据的情况。 管制员的行动方法 jQuery GET 人类 方法2: 使用