0

と がUIViewControllerありUITabBarControllerます。 UIViewController5 つのボタンUITabBarControllerがあり、5 つのタブがあります。

最初のボタンをタップTabBarControllerすると、最初に選択したタブでアプリが表示され、2 番目のボタンをタップTabBarControllerすると、2 番目のタブが表示されます...

これを準備するためにModal-segue、すべてのボタンに使用しました。

すべてがうまく機能します。

ここで、「ホームビューに戻る」アクションを実行するTabBarController「ホーム」ボタンを(プログラムで)作成する必要があります。UINavigationBar

詳細を編集しました

{下のスクリーンショットを参照}

  1. 初期 UIViewController
  2. UITabBarController
  3. ナビゲーションコントローラー
  4. UIViewController

12の間に 2 つのモーダル セグエがあります(2 つのボタン - 2 つのセグエ)

UIViewControllerの私のprepareForSegueでは:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    AppDelegate *d = (AppDelegate *)[[UIApplication sharedApplication] delegate];
    if ([segue.identifier isEqualToString:@"s1"]) {
        d.initialTab = 0;
    }
    else if ([segue.identifier isEqualToString:@"s2"]) {
        d.initialTab = 1;
    }
}

UITabBarControllerの私のviewDidLoadでは:

TabController *mainTabController = (TabController *)self;
    AppDelegate *d = (AppDelegate *)[[UIApplication sharedApplication] delegate];
    [mainTabController setSelectedIndex:d.initialTab];

これは効きます!

しかし、私はホームページに戻る必要があります。したがって、TabBarController の後に NavigationController がある場合、NavigationBar にボタンを作成したいと思います。

ここに画像の説明を入力

4

1 に答える 1

1

1 つのナビゲーション コントローラーを親として使用する ことをお勧めします。
次に、スタートアップ ビューをルート ビューとして追加します。

申請フローの提案

メインのView Controllerページで、

- (void)viewWillAppear:(BOOL)animated
{
   self.navigationController.navigationBarHidden = NO;
}

したがって、メインのナビゲーションが非表示になります。したがって、この内部ナビゲーション フローについて心配する必要はありません。
また、内部ナビゲーションについては、既に別のナビゲーション コントローラーを使用しています。

コードを使用して:

[self.parentViewController.navigationController popToRootViewControllerAnimated:YES];

アプリケーションのルートになり、アプリケーションにスタックされたすべてのビュー コントローラーが表示されます。

うまくいけば、あなたは流れを理解し、気分が良ければ適用します。

コーディングをお楽しみください。
ありがとう。

于 2013-03-13T08:54:11.573 に答える