xcode 在应用程序委托中弹出到根视图控制器

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/12625249/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-15 01:40:22  来源:igfitidea点击:

Pop to root view controller in app delegate

iphoneobjective-ciosxcode

提问by Travis M.

I have an app that someone logs into and if they launch it after sending it to the background for more than 10 minutes I pop up a nice little "session expired" alert and send them to the root view controller (login page).

我有一个应用程序,有人登录,如果他们在将它发送到后台超过 10 分钟后启动它,我会弹出一个漂亮的小“会话已过期”警报并将它们发送到根视图控制器(登录页面)。

Everything works great but I don't know how to pop to the root view controller in my navigation controller stack from the app delegate's applicationWillEnterForeground: method.

一切正常,但我不知道如何从应用程序委托的 applicationWillEnterForeground: 方法弹出到导航控制器堆栈中的根视图控制器。

I tried saving off the navigationController onto an appDelegate variable but I wonder if the app is in the background for several days, if iOS starts freeing some variables, as I get an error in this method at that time.

我尝试将 navigationController 保存到 appDelegate 变量上,但我想知道该应用程序是否在后台运行了几天,iOS 是否开始释放一些变量,因为当时我在此方法中遇到错误。

Any ideas?

有任何想法吗?

回答by Dan F

If the navigation controller is your application's root view controller, then you can get it like:

如果导航控制器是您应用程序的根视图控制器,那么您可以像这样获得它:

UINavigationController *myNavCon = (UINavigationController*)self.window.rootViewController;

where selfis in the app delegate

self应用程序委托中的位置

回答by mhrrt

Just to make things more clear one can use following to pop to rootviewcontroller from AppDelegate

只是为了让事情更清楚,可以使用以下内容从 AppDelegate 弹出到 rootviewcontroller

UINavigationController *navigationController = (UINavigationController  *)self.window.rootViewController;
[navigationController popToRootViewControllerAnimated:YES];

Here self is app delegate.

这里 self 是应用程序委托。