UITabBarController のデリゲートを設定し、次のデリゲート メソッドを用意しました。
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {
[self.navigationController popToRootViewControllerAnimated: YES];
return NO;
}
メソッドが起動し、コンテキスト内で、テーブル ビューの 1 つまたは 2 つのレベルになります。ルート ビュー コントローラーは正しく表示されますが、ナビゲーション バーはリセットされず、1 つまたは 2 つのレベルからテーブル ビューに「戻る」ボタンがまだあります。
(上記のデリゲート メソッドは、アプリでやろうとしていることを簡略化したものですが、それでも問題が発生します。アプリでは、元のタブに戻ったときにルート ビューを表示する必要があるため、ポップしようとしています。私が去る前にルートビューに)。
popToRootViewControllerAnimated が正しく機能しないということは、タイムラグの問題を示唆していますが、私の場合はそうではないようです。shouldSelectViewController を実行する前に、必要なだけ待つことができますが、ナビゲーション バーの「戻る」ボタンはまだめちゃくちゃです。
デリゲートは次のとおりです。
@interface BasicPlaceItemComment : UIViewController<UIAlertViewDelegate, UITabBarControllerDelegate> {
// data members ommitted
}
これは、すべてのテーブル ビューの派生元のクラスです。