【问题标题】:Quit the application on a specific view在特定视图上退出应用程序
【发布时间】:2017-12-29 11:54:16
【问题描述】:

我有一个疑问: 我有一个有 10 个视图的应用程序。我想要的是,如果用户在 View1 上并将应用程序发送到后台,它会终止应用程序(退出(0))。但我希望这仅在 View1 上发生,在其他屏幕上,如果应用程序进入后台然后返回,它将从中断的地方继续。 我能做什么?

【问题讨论】:

  • 您可以在 Appdelegate 的 didenterbackground 方法中检查 View1 在窗口层次结构中是否可见,如果存在视图,您可以退出应用程序。

标签: ios swift


【解决方案1】:

Here 是另一个 SO 问题,询问如何找到当前视图控制器的身份。为什么不在收到applicationWillResignActive 表示您的应用将移至后台时查询当前视图,然后选择您想要的操作?

【讨论】:

    【解决方案2】:

    据我了解,您的描述 Preserving and Restoring State 就是您要查找的内容。


    文档摘录:

    保存和恢复过程大部分是自动的,但您需要告诉 iOS 应用程序的哪些部分要保存。保留应用的视图控制器的步骤如下:

    必填

    可选

    这是Preserving Your App’s Visual Appearance Across Launches的链接

    【讨论】:

      【解决方案3】:

      Apple 的指南似乎严格禁止以编程方式终止您的应用程序(例如,使用exit());这将违背 iOS 用户对应用程序工作方式的期望。

      相反,我推荐以下方法:

      当应用程序被发送到后台(调用applicationWillResignActive(_:))时,检查当前正在显示哪个视图控制器。

      如果您希望下次应用程序进入前台时重新开始,只需将应用程序窗口的根视图控制器重置为应用程序的初始视图控制器(通常,这涉及重新加载初始视图控制器来自 Main.stroyboard,但您的设置可能不同)。

      您无法在运行时选择您的应用程序是进入后台还是在用户按下主页按钮时终止(“多任务处理”);这在构建时在您的 Info.plist 文件中确定。

      另外,请记住,即使您在用户恢复时希望保留的屏幕中,您的应用也可能在后台被系统终止(以回收稀缺的系统资源),所以在这种情况下它仍然会从初始屏幕开始。为防止这种情况,您可能需要查看APIs for state preservation and restoration

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-06-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-10
        • 1970-01-01
        • 2017-11-03
        相关资源
        最近更新 更多