0

3つのタブがあるタブ付きアプリケーションがあります

最初のタブはテーブルビューです2番目と3番目のタブは単一ページビューです

ユーザーがビュー1のテーブルセルをクリックすると、新しいビューがテーブルセルに戻るボタンで押されます。

次に、タブ2をクリックしてから、タブ1に戻ったとします。タブ1にプッシュされた新しいビューは、引き続き表示されます。私が欲しいのは、別のタブでテーブルビューから離れるときにテーブルビューを「リセット」して、戻ったときに、プッシュされた新しいビューではなくテーブルビューが表示されるようにすることです。

4

2 に答える 2

0

ElJayのコメントに同意しますが、質問に答えるにはUITabBarControllerDelegateを使用してください

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController

新しいタブが選択されたら、現在のタブがタブ1のselectedIndexプロパティであるtabBarControllerかどうかを確認します。popToRootViewController:

于 2012-01-13T04:30:32.703 に答える
0

他の人が言っているように、これはおそらく良いユーザーエクスペリエンスではありません。タブコントローラーの考え方は、ユーザーがアプリのさまざまな部分を自由に切り替えて、以前の操作にすぐに戻ることができるようにすることです。

この方法で行うことにした場合は、ナビゲーションビューコントローラーのルートビューコントローラーをカスタムサブクラスにして、タブバーコントローラーのデリゲートとして設定します。

カスタムViewControllerで、次のように関数shouldSelect()を実装します。

func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool
{
  if viewController == self.navigationController {
    self.navigationController.popToRootViewController()
  }
  return true
}

開示:私は上記のコードをコンパイルしようとはしていません。ましてやテストはしていません。

于 2016-12-18T20:56:28.863 に答える