0

各タブ自体がナビゲーションコントローラーであるタブバーベースのiPhoneアプリケーションがあります。したがって、各タブビューにはサブビューがあり、それをself.navigationコントローラーにプッシュしています。

問題は、1 つのビューをプッシュして別のタブを選択し、同じタブを選択してカムバックすると、そのプッシュされたビューが表示されることです。私が望んでいた見解ではありません。

タブが選択されるたびにルートビューを達成するのを手伝ってくれる人はいますか?誰でもそれを行う方法を知っていますか?

4

1 に答える 1

2

UINavigationControllersがViewControllerのスタックを保存し、IUTabBarControllerタブを切り替えるたびに一番上のものを表示するのは正常です。つまり、タブバーがスタックから離れるたびに、各UINavigationControllerがスタックを解放するようにしたいということですか?その場合は、UITabBarControllerDelegateのドキュメントをご覧ください。

http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UITabBarControllerDelegate_Protocol/Reference/Reference.html#//apple_ref/doc/uid/TP40006932

ここに、タブが切り替えられたときに通知するメソッドがあります。

 – tabBarController:shouldSelectViewController:
 – tabBarController:didSelectViewController:

デリゲートプロトコルがどのように機能するかを知っていると思います。

次に、スタックからViewControllerを「ポップ」するメソッドがあるUINavigationControllerのドキュメントを見てください。

http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UINavigationController_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40006934

これは、一番上(「ルート」)のViewControllerにポップします。

– popToRootViewControllerAnimated:

注意点-一般に、ユーザーはUITabBarControllerタブが最後に切り替えたときと同じビューを保持することを期待しています。

また、あなたが話しているのは、タブバータブが2回タップされたときのデフォルトの動作です(つまり、そのタブバータブがすでに選択されているときにタップされたとき)。

于 2012-07-07T09:36:42.437 に答える