0

私は次のことを達成しようとしています:

ナビゲーション コントローラーにいて、ViewController をプッシュしたとします。ユーザーがタブ バーの別の項目をタップします。別のView Controllerに移動する前に、プッシュされたView Controllerをポップ(アニメーション化)したいのですが、新しいView Controllerをルートとして使用して、プッシュされたView Controllerが消えると表示されるようにします。

説明するのは難しいですが、 popToRootViewController のアニメーションのためにプッシュされたビューコントローラーが消えたときに、古いビューコントローラーが表示されてから新しいビューコントローラーに移動するのではなく、新しいビューコントローラーが表示されるようにしたいだけです。

ビュー コントローラ B に対応するタブ バーのオプション b にいて、C ビュー コントローラが押されていると想像してください。

B -> C

ユーザーは、

こうなってほしい

A -> C

B -> C

次に、A viewController を選択し、A ケースでアニメーション化され、B ケースでアニメーション化されていない両方の C をポップします。

これは私のコードです:

    [(UINavigationController *)self.tabBar.selectedViewController popToRootViewControllerAnimated:NO];
     UIViewController * viewControllerToPush = self.tabBar.selectedViewController;

    self.tabBar.selectedIndex = indexPath.row;

    [(UINavigationController *)self.tabBar.selectedViewController pushViewController:viewControllerToPush animated:NO];
    [(UINavigationController *)self.tabBar.selectedViewController popToRootViewControllerAnimated:YES];

しかし、機能していません。「ナビゲーションコントローラーのプッシュはサポートされていません」というメッセージが表示されます

viewControllers をあるナビゲーション コントローラーから別のナビゲーション コントローラーに移動することは可能ですか? 何か案は?

4

2 に答える 2

0

UINavigationControllerDelegateUITabBarControllerDelegate方法を見てみましょう。これらを使用すると、コントローラーを押したりポップしたりするとき、またはタブを選択したときに、いくつかのアクションを実行できます。

UINavigationControllerDelegate

– navigationController:willShowViewController:animated:
– navigationController:didShowViewController:animated:

UITabBarControllerDelegate

– tabBarController:shouldSelectViewController:
– tabBarController:didSelectViewController:
– tabBarController:willBeginCustomizingViewControllers:
– tabBarController:willEndCustomizingViewControllers:changed:
– tabBarController:didEndCustomizingViewControllers:changed:
于 2013-02-06T12:51:44.477 に答える
0

それは非常に悪い UI デザインであり、Apple はそれを認めず、Apple ヒューマン インターフェイス ガイドライン (HIG) に違反していると思います。あなたのアプリは、ユーザーが期待するものとは異なる動作をすると思います。

TabBarControllers の個々のタブは、アプリの個別の/異なる領域用であり、アプリの 1 つの領域を移動するためのものではありません。うまくいけば、それは理にかなっています。

tabBar の代わりに一番下に toolBar を持つ単一の navigationController を使用してから、1 つのナビゲーション スタック内で pop をプッシュすることをお勧めします。

于 2013-02-06T13:02:15.317 に答える