0

ナビゲーションコントローラーを備えた2つの異なるテーブルビューを持つ2つのタブバーアイテムがあります。tab1 をクリックすると --- table1 が開いています...よし。しかし、table1を選択すると、別のビューに移動します(テーブルはビューを選択しました)...すべてが良好です。

しかし、ここでの問題は

tab2 をクリックすると ---- テーブル 2 が開いています....よし。

しかし、再度 tab1 をクリックすると------ table1 がロードされていません.... ロードされています (テーブルがビューを選択した) ビューです。前回と同じように、そこに残しました。

私はtable1を開きたい----プログラミングによってtab1をクリックすると……。

助けて

4

1 に答える 1

1

これは、タブ バーの項目でタブ バー コントローラーとナビゲーション コントローラーを使用している場合に想定される動作です。ユーザーは、タブがビューの状態を保持することを期待します。

ユーザーがタブに戻ったときにナビゲーション コントローラーのルート ビュー コントローラーに戻るようにアプリを強制したい場合は、UITabBarControllerDelegate tabBarController:didSelectViewController:メソッドを実装できます。このデリゲート メソッドの機能は次のとおりです。

ユーザーがタブ バーで項目を選択したことをデリゲートに伝えます。

次に、ユーザーがタブをタップしたときにpopToRootViewControllerAnimated :というUINavigationController のメソッドを呼び出します。これは、次のことに役立ちます。

ルート ビュー コントローラーを除くスタック上のすべてのビュー コントローラーをポップし、表示を更新します。

例えば:

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
    if(viewController == yourNavigationController) {
        UINavigationController *navigationController = (UINavigationController *)viewController;
        [navigationController popToRootViewControllerAnimated:NO];
    }
}
于 2013-06-21T15:21:45.657 に答える