0

マルチタブ iPhone アプリケーションの状態を復元しようとしています。5 つ以上のタブがあり、それぞれに独自のナビゲーション コントローラーがあります。applicationDidFinishLaunching で、ユーザーが最後に使用したタブを特定し、それを設定します

myTabController.selectedIndex = persistedTabIndex;

次に、そのタブのルート ビュー コントローラーで関数を呼び出して、それ自体を復元します。問題は、タブが「More」ページに移動された場合、ビューがロードされず、呼び出しが NIL ランドに消えてしまうことです。問題のView Controllerにビューを強制的にロードさせる方法はありますか?

ご検討とご回答をいただき、誠にありがとうございます。

4

2 に答える 2

1

Web で見つけたコードを使用して、最後に読み込まれたタブを保存しています。私のアプリデリゲートで:

- (void)applicationDidFinishLaunching:(UIApplication *)application
{   
    // .. my app set up is here

    // Select the tab that was selected on last shutdown
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSInteger whichTab = [defaults integerForKey:kSelectedTabDefaultsKey];
    self.tabBarController.selectedIndex = whichTab;
}

- (void)applicationWillTerminate:(UIApplication *)application
{
    // Save the current tab so the user can start up again in the same place.
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSInteger whichTab = self.tabBarController.selectedIndex;
    [defaults setInteger:whichTab forKey:kSelectedTabDefaultsKey];
}

そして私のインターフェースファイルの定義:

#define kSelectedTabDefaultsKey @"SelectedTab"

これは、ユーザーがタブを再配置しない限り機能します。その場合、タブの配列を更新する必要があります (インデックスが変更されます)。

コードを見つけた元のページは次のとおりです。

http://iphonedevelopment.blogspot.com/2009/09/saving-tabs.html

「More...」タブを表示するタブ付きインターフェースでこのコードを使用しています。「More...」部分のタブで終了すると、アプリを再起動するとインターフェイスがそのタブに戻ります。「More...」テーブルビューでインターフェイスが再起動しませんが、問題はないと思います。

于 2009-09-10T05:11:23.530 に答える
0

それは変です; ナビゲーション コントローラーがタブ コントローラーの配列にある-loadView場合、メイン 4 にあるかどうかに関係なく、選択されたときに通常どおり呼び出されるメソッドを取得する必要があり[thePersistedController loadView]ます。 .

于 2009-09-10T03:13:17.827 に答える