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 に答える