iphone - 保存和恢复标签栏 Controller 的状态

标签 iphone objective-c uinavigationcontroller uitabbarcontroller object-state

我有一个应用程序,它有一个带有两个选项卡的 UITabBarController,每个选项卡都有自己的导航 Controller 。现在我想在用户关闭应用程序时存储应用程序的状态,以便当用户重新启动应用程序时,应用程序将显示与上次关闭前相同的位置。
所以,在 applicationWillTerminate: 我有

[NSKeyedArchiver archiveRootObject:tabBarController toFile:@"lastVisitedTab"];

然后,在 applicationDidFinishLaunching: 我有

UITabBarController *last= (UITabBarController *)[NSKeyedUnarchiver unarchiveObjectWithFile:@"lastVisitedTab"];
if (last)
    tabBarController = [last retain];

我还对 UIImage 进行了扩展,使其与 NSCoding 兼容。但是,这不起作用,因为状态没有保留。始终选择第一个选项卡,并且也不会保留任何导航。
有人可以告诉我哪里出了问题,或者告诉我如何正确地做吗?

最佳答案

我认为持久化实际对象有点矫枉过正。相反,只需保存 selectedIndex 属性(使用 [NSNumber numberWithInt: tabBar.selectedIndex]),然后读回并在启动时设置属性。也许这不能正确回答您的问题,但对于您要实现的目标来说可能就足够了。

关于iphone - 保存和恢复标签栏 Controller 的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1552837/

相关文章:

ios - UINavigationController里面的Photoscroller

iphone - 在 .mp3 的 Safari 中打开而不是选项卡不显示

iphone - UIImage encodeWithCoder 识别选择器?

iphone - UILabel 背景颜色

php - 从 php 通过 Pushwoosh 发送推送通知

ios - 在 swift 中以编程方式创建 navigationController 时,ViewController 出现多次

ios - NSDictionary 和字符串文字键

objective-c - 如何保留我自己的对象和属性

objective-c - 如何检测状态栏中是否显示 NSStatusItem?

ios - 是否可以弹出 UINavigationController 两次?