gpt4 book ai didi

iphone - 如何在终止应用程序之前保留 iPhone 应用程序状态?

转载 作者:行者123 更新时间:2023-12-03 18:28:03 25 4
gpt4 key购买 nike

我开发了一个带有标签栏和导航 Controller 的 iPhone 应用程序。

目前运行良好。

现在我希望应用程序在退出之前保存其状态。

假设我有 6 个选项卡,如果有来电,那么重新启动应用程序后,我应该会看到最后选择的选项卡。

我看到了关于这个主题的几个问题,但看到它们后我更困惑了,

谁能告诉我一个直接的方法来做到这一点?

最佳答案

这个问题没有“一刀切”的确切答案 - 保存应用程序状态的实现将在很大程度上取决于应用程序的结构,因此任何单一解决方案都不可能适合您的具体情况。

但是,有一些一般性提示和指示,可以帮助您走上开发良好状态保存解决方案的正确道路:

  1. 您通常需要执行任何操作来保存应用委托(delegate)中 applicationWillTerminate: 中的状态,或者通过监听其他类中的 UIApplicationWillTerminateNotification 来保存状态。

  2. Look at NSUserDefaults.您可以使用 NSUserDefaults 来存储与首选项或其他信息相关的键/值对(类似于 NSDictionary,尽管您只能存储在 NSUserDefaults 中实现 NSCoding 的对象)。使用 NSUserDefaults 来存储状态信息。需要注意的是 - 您不应该使用 NSUserDefaults 来存储大量数据,因为这会减慢应用程序的启动时间(因为这些值是在启动时加载的)。

  3. 更具体地针对您的情况...如果您只想在应用程序之间保留选定的选项卡,则应该实现 applicationWillTerminate: 并使用 NSUserDefaults 来存储选定的选项卡索引。然后,在您的 applicationDidFinishLaunching: 实现中,您将检查该 NSUserDefaults 键是否存在,并将 UITabBarController 的选定索引设置为存储的值(如果存在)。

  4. 如果您还希望能够恢复所选选项卡的导航堆栈,那么您需要存储足够的信息,以便可以准确地重建导航堆栈。一般意义上,您应该在 NSUserDefaults 中存储哪些信息很难量化,因为它与应用程序的结构以及导航堆栈中 View Controller 层次结构的可能迭代高度相关。

  5. 如果您需要恢复更通用的导航堆栈,包括可能输入的用户数据,您不希望在应用程序关闭时丢失这些数据(例如,如果用户正在创建某种新记录) ),我建议您将注意力从在应用程序委托(delegate)级别存储应用程序状态转移到让 View Controller 类监听 UIApplicationWillTerminateNotification 并执行自己的特定状态保存。您还必须确定某种机制,以使用终止时每个 View Controller 保存的信息来恢复导航层次结构。这是一种更复杂的技术,根据您的需要,可能没有必要。

不幸的是,这个答案有点模糊,特别是对于更一般和复杂的情况,因为正如我所指出的,这个问题没有通用的解决方案,因为它在很大程度上取决于您的应用程序结构。

以下是使用 NSUserDefaults 的示例:http://robertcarlsen.net/2009/06/19/overly-simplistic-saving-state-in-of-for-iphone-847

关于iphone - 如何在终止应用程序之前保留 iPhone 应用程序状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1811696/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com