每次从同一视图加载应用程序

时间:2012-05-28 19:28:37

标签: iphone objective-c ios xcode uitabbar

我希望我的应用程序每次完全加载内存时都会加载到同一个视图中,因此当应用程序关闭然后再次打开时,它会打开相同的视图(目前它是UITabBar中的一个选项卡) 。 我想看看代码,而不只是关于如何做到这一点的描述,因为我在iOS开发方面不是很有经验。 提前谢谢!

1 个答案:

答案 0 :(得分:3)

如果您的选项卡是主菜单,例如,您始终希望在运行应用程序时加载该选项卡,则可以通过在应用程序的Info.plist文件中添加以下密钥来考虑不允许多任务处理:

<击>
Application does not run in background - (tick the box)
or:
UIApplicationExitsOnSuspend - set to YES (BOOL)

这将确保您的应用在按下主页并且调用UIApplicationDelegate方法applicationwillterminate:时退出。

编辑:

好的,我认为无论何时发生变化,您都需要跟踪特定标签和/或用户所在的标签。将此值保存在NSUserDefaults(plist)中,并在每次应用程序启动或变为活动状态时进行检查 - 然后如果该选项卡不正确,则可以切换到该选项卡。

这是你想要做的吗?

编辑2:

第一步,无论您何时听到标签栏上的按钮按下,您都需要获取新选定索引的整数值,如此处接受的答案:

Switching to a TabBar tab view programmatically?

然后,您需要将此值(存储/保存)写入.plist文件。首先,向项目中添加一个新的属性列表文件,然后在Xcode中打开它并添加一个新行,将其称为SelectedTab之类的简单类型,并且值为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!

您只需在应用代理中选择正确的位置即可执行此检查,然后告诉标签栏加载所需的标签。

希望这有帮助!