Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/117.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 点击主页按钮时显示登录屏幕_Ios_Swift - Fatal编程技术网

Ios 点击主页按钮时显示登录屏幕

Ios 点击主页按钮时显示登录屏幕,ios,swift,Ios,Swift,我有一个Swift项目,当用户点击Home按钮或Appswitcher(像大多数Bankingapps或1Password一样)时,它需要切换回Login Viewcontroller。登录Viewcontroller是初始VC。几天以来我一直在寻找这个,但找不到任何关于这个的信息。我如何在我的项目中实现这一点 多谢各位 德克简化了@holex和我的评论(并且在没有通知的情况下工作) 此解决方案将要求您的导航基于UINavigationController,登录ViewController设置为

我有一个Swift项目,当用户点击Home按钮或Appswitcher(像大多数Bankingapps或1Password一样)时,它需要切换回Login Viewcontroller。登录Viewcontroller是初始VC。几天以来我一直在寻找这个,但找不到任何关于这个的信息。我如何在我的项目中实现这一点

多谢各位


德克

简化了@holex和我的评论(并且在没有通知的情况下工作) 此解决方案将要求您的导航基于
UINavigationController
,登录ViewController设置为
rootViewController

编辑:要确保您的应用程序使用如上所述的
UINavigationController

  • 打开你的
    Main.Storyboard

  • 如果看到这样的布局,则已设置:

  • 否则,请选择当前根视图控制器

  • 从菜单中选择编辑器>嵌入>导航控制器
  • 如果不希望导航栏可见,请禁用“显示导航栏”选项
编辑结束

在该星座中,您可以在应用程序委托中执行以下操作:

这会在应用程序失去焦点时强制弹出根目录。 引用苹果文档:

当覆盖窗口弹出或设备锁定时,[应用程序]会失去焦点

使用应用程序切换器或按下home(主页)按钮都应属于该类别


我在

上放置了一个示例项目,简化了@holex和我的评论(并且在没有通知的情况下工作) 此解决方案将要求您的导航基于
UINavigationController
,登录ViewController设置为
rootViewController

编辑:要确保您的应用程序使用如上所述的
UINavigationController

  • 打开你的
    Main.Storyboard

  • 如果看到这样的布局,则已设置:

  • 否则,请选择当前根视图控制器

  • 从菜单中选择编辑器>嵌入>导航控制器
  • 如果不希望导航栏可见,请禁用“显示导航栏”选项
编辑结束

在该星座中,您可以在应用程序委托中执行以下操作:

这会在应用程序失去焦点时强制弹出根目录。 引用苹果文档:

当覆盖窗口弹出或设备锁定时,[应用程序]会失去焦点

使用应用程序切换器或按下home(主页)按钮都应属于该类别



我将一个示例项目置于

订阅
UIApplicationWillEnterForegroundNotification
,并在收到此类通知时调用
–PoptorootViewController激活的
方法。@holex-这不应该是
UIApplicationWillResignActiveNotification
?“应用程序在接收事件时处于活动状态。活动应用程序可以说具有焦点。它在启动后获得焦点,在覆盖窗口弹出或设备锁定时失去焦点,在设备解锁时获得焦点。”如果OP想要回到离开应用程序而不是进入应用程序,我认为通知更合适。(1PW“锁定”在离开时,甚至在收到通知时)是的,确实,我粘贴了错误的一个。:)当用户双击Appswitcher的主页时,将不会调用UIApplicationWillEnterForegroundNotification。有没有办法检查“will enter Background”或类似的内容?订阅
UIApplicationWillEnterForegroundNotification
,并在收到此类通知时调用
–popToRootViewControllerAnimated
方法。@holex-这不应该是
UIApplicationWillResignActiveNotification
?“应用程序在接收事件时处于活动状态。活动应用程序可以说具有焦点。它在启动后获得焦点,在覆盖窗口弹出或设备锁定时失去焦点,在设备解锁时获得焦点。”如果OP想要回到离开应用程序而不是进入应用程序,我认为通知更合适。(1PW“锁定”在离开时,甚至在收到通知时)是的,确实,我粘贴了错误的一个。:)当用户双击Appswitcher的主页时,将不会调用UIApplicationWillEnterForegroundNotification。有没有办法检查“将进入背景”或类似的东西?非常感谢,但我的应用程序永远不会进入,如果。所以它对我没有任何帮助。我必须以某种方式声明rootviewcontroller吗?@DirkHildebrand-如果你能告诉我你的应用程序是否使用情节串连板或所有设置都是在代码中进行的,我可以提供一个更好的示例。好的,更新我的解释并将示例项目推送到Github,我希望现在已经足够清楚了。对我来说,听起来你根本没有导航控制器-看看我的示例应用程序。这样做的诀窍是:我没有在导航控制器中嵌入初始的Viewcontroller,在这样做之后,你的代码就像一个魔咒一样工作!!非常感谢你!非常感谢你,但我的应用程序永远不会进入,如果。所以它对我没有任何帮助。我必须以某种方式声明rootviewcontroller吗?@DirkHildebrand-如果你能告诉我你的应用程序是否使用情节串连板或所有设置都是在代码中进行的,我可以提供一个更好的示例。好的,更新我的解释并将示例项目推送到Github,我希望现在已经足够清楚了。对我来说,听起来你根本没有导航控制器-看看我的示例应用程序。这样做的诀窍是:我没有在导航控制器中嵌入初始的Viewcontroller,在这样做之后,你的代码就像一个魔咒一样工作!!非常感谢你!
// will get called just before the UIApplicationWillResignActiveNotification is posted
func applicationWillResignActive(application: UIApplication) {
    if let keyWindow = application.keyWindow,
               navVC = keyWindow.rootViewController as? UINavigationController {
        navVC.popToRootViewControllerAnimated(true)
    }
}