【发布时间】:2012-05-28 19:28:37
【问题描述】:
我希望我的应用程序在每次内存完全加载时都加载到同一个视图中,因此当应用程序关闭然后再次打开时,它会打开同一个视图(目前它是 UITabBar 中的选项卡之一) . 我想看代码,而不仅仅是关于如何做到这一点的描述,因为我在 iOS 开发方面不是很有经验。 提前致谢!
【问题讨论】:
标签: iphone objective-c ios xcode uitabbar
我希望我的应用程序在每次内存完全加载时都加载到同一个视图中,因此当应用程序关闭然后再次打开时,它会打开同一个视图(目前它是 UITabBar 中的选项卡之一) . 我想看代码,而不仅仅是关于如何做到这一点的描述,因为我在 iOS 开发方面不是很有经验。 提前致谢!
【问题讨论】:
标签: iphone objective-c ios xcode uitabbar
如果您的选项卡是主菜单,例如,您总是希望在应用运行时加载,那么考虑通过在应用的Info.plist 文件中添加以下键来不允许多任务处理:罢工>
Application does not run in background - (tick the box)
or:
UIApplicationExitsOnSuspend - set to YES (BOOL)
这将确保您的应用在按下 home 键并调用 UIApplicationDelegate 方法 applicationwillterminate: 时退出。
编辑:
好的,我认为您需要跟踪您的特定标签和/或用户所在的标签,只要这种情况发生变化。将此值保存在 NSUserDefaults (plist) 中,并在每次应用启动或激活时检查它 - 如果它不在正确的选项卡上,您可以切换到该选项卡。
这是你想要做的吗?
编辑 2:
第一步,无论您在哪里监听标签栏上的按钮按下,您都需要获取新选定索引的整数值,就像在此处接受的答案中一样:
Switching to a TabBar tab view programmatically?
然后,您需要将此值写入(存储/保存)到 .plist 文件。首先,将一个新的属性列表文件添加到您的项目中,然后在 Xcode 中打开它并添加一个新行,将其命名为 SelectedTab 之类的简单名称,类型为 Number,值为 1337。
在您的应用委托中,您需要告诉您的应用您有一个新的 .plist 需要向该应用注册,因此在 application:didFinishLaunchingWithOptions: 中您需要执行以下操作:
NSUserDefaults* userPreferences = [NSUserDefaults standardUserDefaults];
[userPreferences registerDefaults: [NSDictionary dictionaryWithContentsOfFile: [[NSBundle mainBundle] pathForResource: @"myNewFile" ofType: @"plist"]]];
以下是您可以读取和写入 SelectedTab plist 整数的方法:
要获取存储的值...
int test = [[NSUserDefaults standardUserDefaults] integerForKey: @"SelectedTab"];
要将新值写入您的密钥...
int newTab = 2;
[[NSUserDefaults standardUserDefaults] setInteger: newTab forKey: @"SelectedTab"];
[[NSUserDefaults standardUserDefaults] synchronize]; // absolutely critical!
您只需要在您的应用代理中选择正确的位置来执行此检查,然后告诉您的标签栏加载您想要的标签。
希望这会有所帮助!
【讨论】: