次のストーリーボードを作成しました。
- ナビゲーションコントローラー
- ログインビューコントローラー
- タブ コントローラー
- ナビゲーションコントローラー
- 検索ビュー コントローラー
- 結果ビューコントローラー
- 詳細ビュー コントローラー
- ナビゲーションコントローラー
- 高度な検索ビュー コントローラー
- 結果ビューコントローラー
- 詳細ビュー コントローラー
ユーザーがタブ バー ボタンをタップしたときに、表示されるビューが検索 ([検索] をタップした場合) または [詳細検索] ([詳細] をタップした場合) であることを確認したいと思います。指定されたタブ。つまり、トップ/ルートビューから開始したい
タブバーのデリゲートをクラスに設定し、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];
}
その結果、ユーザーが [高度な検索] ボタンをタップしても、何も表示されずに黒い画面が表示されます。そのコードをコメントアウトすると、高度な検索が適切に表示されます。
結果および詳細コントローラーは、検索と高度な検索の両方で再利用されることに注意してください。
何か案は?ご協力いただきありがとうございます。この壁に頭をぶつけ続けたら、ハロウィーンのコスチュームを買う必要はありません!