0

我对 UINavigationController 有疑问。

我有一个应用程序,它有很多视图控制器,我在使用导航控制器推送和弹出功能之间切换。

我的要求是这样的:在我的应用程序中,当用户在第 5 个屏幕上并且用户单击主页按钮并再次双击主页按钮并从多任务栏中删除或终止应用程序然后用户点击应用程序图标(打开应用程序)应用程序应该从它离开的地方开始,或者应用程序应该从第 5 个屏幕开始。

我在 applicationDidEnterBackground 和 applicationDidBecomeActive 的应用程序委托中执行代码,但这对我没有帮助

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 
    // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.

    self.viewArray = [[NSMutableArray alloc] init];
    UINavigationController* navController = self.navigationController;
    int viewcountt = [navController.viewControllers count];

    NSLog(@"descbefor -- %@",[navController.viewControllers description]);
    NSLog(@"kountbefor -- %d",[navController.viewControllers count]);


    for (int cont=0; cont < viewcountt; cont++)
    {
        [self.viewArray addObject:[navController.viewControllers objectAtIndex:cont]];

    }
}

我尝试保存 self.viewArray 但无法保存。并取回。

是否可以这样做。

谢谢。

4

1 回答 1

0

我正在做类似的事情并创建了一个类来将不同分支的状态保存到NSUserDefaults. 当每个场景加载时,我调用一个类方法来保存当前场景为分支名称。

这是课程:

接口文件:

#import <Foundation/Foundation.h>

@interface SceneController : NSObject

+(NSString *)getSceneNameWithBranchName:(NSString *)name;

+(void)saveSceneNameWithBranchName:(NSString *)name andSceneName:(NSString *)sceneName;

@end

实现文件:

#import "SceneController.h"

@implementation SceneController

+(NSString *)getSceneNameWithBranchName:(NSString *)name {
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
    NSString *sceneName = [prefs valueForKey:name];

    return sceneName;
}

+(void)saveSceneNameWithBranchName:(NSString *)name andSceneName:(NSString *)sceneName {
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
    [prefs setValue:sceneName forKey:name];
    [prefs synchronize];
}

@end

这对我来说效果很好,并且可以在应用重新启动后继续存在。

于 2012-10-17T13:49:49.410 回答