0

次のストーリーボードを作成しました。

  • ナビゲーションコントローラー
    • ログインビューコントローラー
      • タブ コントローラー
      • ナビゲーションコントローラー
        • 検索ビュー コントローラー
          • 結果ビューコントローラー
            • 詳細ビュー コントローラー
      • ナビゲーションコントローラー
        • 高度な検索ビュー コントローラー
          • 結果ビューコントローラー
            • 詳細ビュー コントローラー

ユーザーがタブ バー ボタンをタップしたときに、表示されるビューが検索 ([検索] をタップした場合) または [詳細検索] ([詳細] をタップした場合) であることを確認したいと思います。指定されたタブ。つまり、トップ/ルートビューから開始したい

タブバーのデリゲートをクラスに設定し、didSelectViewController を次のように実装しました。

タブバーコントローラー .h

#import <UIKit /UIKit.h>
@interface TabController : UITabBarController <UITabBarControllerDelegate>
@end

タブバーコントローラー .m

- (void) viewDidLoad
{
    [super viewDidLoad];
    self.delegate = self;
}

- (void) tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
    [viewController.navigationController popToRootViewControllerAnimated:YES];
}

検索コントローラーと高度な検索コントローラーの両方で.m

- (void) viewWillAppear
{
    [super viewWillAppear:animated];

    //Hide the nav bar at the search/advanced controller level.  Will be shown at results and detail levels
    [[self navigationController] setNavigationBarHidden:YES animated:YES];

    //Set the text for the back button
    UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle: @"title" style: UIBarButtonItemStyleBordered target: nil action: nil];

    [self.navigationItem setBackBarButtonItem: backButton];
}

その結果、ユーザーが [高度な検索] ボタンをタップしても、何も表示されずに黒い画面が表示されます。そのコードをコメントアウトすると、高度な検索が適切に表示されます。

結果および詳細コントローラーは、検索と高度な検索の両方で再利用されることに注意してください。

何か案は?ご協力いただきありがとうございます。この壁に頭をぶつけ続けたら、ハロウィーンのコスチュームを買う必要はありません!

4

1 に答える 1

1

私は同じ種類の問題を抱えていました。私はこのコードを使用しましたが、うまくいきました。[(UINavigationController *)viewController popToRootViewControllerAnimated:NO];

于 2012-10-18T04:55:56.990 に答える