0

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];
}

質問が基本的すぎる場合は、どうもありがとうございました。

4

1 に答える 1

0

実際に、設定ビューで独自の UINavigationBar を作成し、次を使用して問題を解決しました。

[self.view insertSubview:tabBarController.view belowSubview:myNavigationBar];

これにより、残りのビューがナビゲーション バーの下に挿入されます。これを使用して、ビューをポップして前の画面に戻るボタンを構成できます。

「addSubview」と「inserSubview + belowSubview」の違いに気付くのに少し時間がかかりました。ごめんなさい!

于 2010-05-05T20:55:50.983 に答える