我怀疑: 我有一个有10个视图的应用程序。我想要的是,如果用户在View1上并将应用程序发送到后台,它将终止应用程序(退出(0))。但我希望这只在View1 上发生,在其他屏幕上,如果应用程序进入后台然后返回,它将在中断的地方继续。 我该怎么办?
答案 0 :(得分:5)
Apple的指南似乎严格禁止以编程方式终止您的应用(例如,使用exit()
);它会违背iOS用户对应用程序工作方式的期望。
相反,我推荐以下方法:
当应用程序发送到后台(调用applicationWillResignActive(_:)
)时,请检查当前正在显示哪个视图控制器。
如果您希望在下次将应用程序带到前台时重新开始,只需将应用程序窗口的根视图控制器重置为应用程序的初始视图控制器(通常是,它涉及从Main.stroyboard重新加载初始视图控制器,但您的设置可能不同。)
您无法在运行时选择您的应用程序是在后台运行还是在用户按下主页按钮时终止("多任务");这是在构建时在Info.plist文件中设置的。
此外,请记住,即使您在用户恢复时仍在屏幕中保留,您的应用可能会在系统处于后台时终止(以回收稀少的系统资源),因此在这种情况下它仍将从初始屏幕开始。为防止这种情况发生,您可能需要查看APIs for state preservation and restoration。
答案 1 :(得分:2)
Here是另一个问题,询问如何找到当前视图控制器的标识。当您收到applicationWillResignActive
表示您的应用将移至后台并选择所需操作时,为什么不查询当前视图?
答案 2 :(得分:2)
据我所知,您的描述Preserving and Restoring State正是您所寻找的。 p>
摘自文档:
保存和恢复过程大多是自动的,但您需要告诉iOS应用程序的哪些部分要保留。保留应用程序视图控制器的步骤如下:
将恢复标识符分配给视图控制器 你想保留的配置;见Tagging View Controllers for Preservation。
告诉iOS如何创建或定位新的视图控制器对象 发射时间;见Restoring View Controllers at Launch Time。