Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 保存和恢复uinavigation控制器的状态_Iphone_Objective C_Ios - Fatal编程技术网

Iphone 保存和恢复uinavigation控制器的状态

Iphone 保存和恢复uinavigation控制器的状态,iphone,objective-c,ios,Iphone,Objective C,Ios,我的UINavigationController有问题 我有一个应用程序,它有太多的视图控制器,我在使用导航控制器推送和弹出功能之间切换 我的要求是这样的:在我的应用程序中,当用户在第五个屏幕上,用户单击主页按钮,然后再次双击主页按钮,从多任务栏删除或终止应用程序,然后用户点击应用程序图标(打开应用程序)应用程序应该从离开的位置开始,或者应用程序应该从第五个屏幕开始 我在ApplicationIdentinterBackground和ApplicationIDBecMeactive中执行应用程序

我的UINavigationController有问题

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

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

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

- (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]];

    }
}
-(无效)应用程序标识符背景:(UIApplication*)应用程序
{
//使用此方法释放共享资源、保存用户数据、使计时器无效,并存储足够的应用程序状态信息,以便在应用程序稍后终止时将其恢复到当前状态。
//如果您的应用程序支持后台执行,则会调用此方法而不是applicationWillTerminate:当用户退出时。
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]);
对于(int cont=0;cont
我试图保存self.viewArray,但无法保存。然后重试

有没有可能这样做


谢谢

我正在做类似的事情,并创建了一个类来将不同分支的状态保存到
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