Xcodeのユーティリティテンプレートに基づいてアプリケーションを構築しています。これにさらにいくつかのビューを追加しました。私のアプリケーション構造は次のようになります。
MainView(アプリメニュー)
フリップサイドビュー(電卓)
UINavigationController
設定ビュー
viewDiDLoad:UITabBarController
- Tab1 view (options) - Tab2 view (information text)
MainViewからFlip-sideviewに正しくナビゲートできます。これは、NavigationControllerのルートビューでもあります。フリップサイドビューから、(viewDidLoadを使用して)ロードされるとすぐに、2つのタブを持つUITabBarControllerを表示するように構成されたナビゲーションコントローラーの2番目のビュー(設定ビュー)をプッシュします。
UITabBarControllerを削除すると、設定ビューの「popViewController」を使用して、問題なくフリップサイドビューに戻ることができます。問題は、設定ビューのviewDiDLoadにUITabBarControllerをロードすると発生します...タブは完全に機能しますが、フリップサイドビュー(ナビゲーションコントローラーのルートビュー)に戻ることができなくなります。
ナビゲーションコントローラーのナビゲーションバーを使用すると戻ることができますが、独自のボタンを構成してナビゲーションバーを非表示にしたいです。
これまで、次の方法を試しました。
[self.navigationController popViewControllerAnimated:YES];
[self.navigationController popToRootViewControllerAnimated:YES];
[self.navigationController popToViewController:FlipSideViewControllerアニメーション:YES];
しかし、それらは機能していないようです。最初の2つは何もしません(画面はそのままです)。3つ目は「FlipsideViewController」を認識しません(おそらくMainViewControllerのデリゲートであるためですか?)。
ナビゲーションバーをアクティブにした場合、ナビゲーションバーの「戻る」ボタンが正確に何をしているのかを確認する方法はありますか?
デリゲートを使用する必要がありますか?
2つのタブビューのいずれかから設定ビューでpopViewControllerメソッドを呼び出すことはできますか?
これは私のフリップサイドビューです:
- (IBAction)showSettingsView {
SettingsViewController *controller = [[SettingsViewController alloc] initWithNibName:@"SettingsView" bundle:nil];
controller.title = @"Settings";
[self.navigationController pushViewController:controller animated:YES];
[controller release];
}
これは私の設定ビューです:
- (void)viewDidLoad {
[super viewDidLoad];
tabBarController = [[UITabBarController alloc] init];
Tab1ViewController* vc1 = [[Tab1ViewController alloc] init];
Tab2ViewController* vc2 = [[Tab2ViewController alloc] init];
NSArray* controllers = [NSArray arrayWithObjects:vc1, vc2, nil];
tabBarController.viewControllers = controllers;
[self.view addSubview:tabBarController.view];
}
そして、タブビューの1つに戻るメソッド:
- (IBAction)backFromTab1View {
[self.navigationController popToViewController:FlipSideViewController animated:YES];
}
質問が基本的すぎる場合は、どうもありがとうございました。