离开视图控制器后保留任务

Posted

技术标签:

【中文标题】离开视图控制器后保留任务【英文标题】:Preserving a task after leaving the view controller 【发布时间】:2017-09-09 12:23:18 【问题描述】:

我有一个视图控制器,我可以在其中启动两个任务。一个用于获取位置更新,另一个用于获取加速度计和陀螺仪传感器数据更新。我将这两个的内部工作分离为两个单独的类,并通过委托从视图控制器中检索数据。

我遇到了一个问题。说,我在视图控制器中启动位置和运动传感器数据获取,然后我离开所述视图控制器。这反过来又破坏了那里创建的对象,当我返回视图控制器时,一切都被重置了。

我希望那些启动的操作即使在我离开视图控制器时也能保持活动状态。并坚持到我回来。我该如何处理这种情况?

【问题讨论】:

【参考方案1】:

有几种方法可以解决这个问题。您可以使执行这些功能的类成为永远不会被破坏的单例,并且您的任何类都可以访问。另一个不太好的 IMO 选项是将对象从第一个视图控制器传递到第二个视图控制器。

【讨论】:

【参考方案2】:

单身人士可以解决这个问题。检查这个post 这样,只要您启动管理器,无论视图控制器状态如何,它都会保持活动状态。

【讨论】:

【参考方案3】:

从第二个视图控制器返回时,您不应该启动您的第一个视图控制器(您正在启动位置和运动传感器数据的位置)。这可以通过两种方式完成。

一个是使用导航控制器推动您的第二个视图控制器并返回 从现有视图控制器呈现第二个视图控制器并在返回时关闭第二个视图控制器

其他方式:(如果实例化您的第一个视图控制器)

在 appdelegate 中全局声明位置和运动传感器数据变量,并在您的第一个视图控制器中为它们分配值。执行这些操作,您可以在任何地方使用这些值。

【讨论】:

以上是关于离开视图控制器后保留任务的主要内容,如果未能解决你的问题,请参考以下文章

推送视图控制器后如何保留 UITabBar

iOS - 在其顶部呈现模式后保留视图控制器状态

身份验证后跨视图控制器保留用户数据

Swift 3 - 重新排列并保留表格视图中的单元格

ASP.net MVC - 如何在各种视图中保留模型

使用标签栏控制器离开视图时如何关闭视图