Question

Je construis une application basée sur le modèle utilitaire de Xcode, auquel j'ai ajouté quelques autres points de vue. Ma structure d'application serait la suivante:

  • MainView (le menu de l'application)

    • vue du côté rabattable (une calculatrice)

    • UINavigationController

    • Paramètres voir

      • viewDidLoad: UITabBarController

                - Tab1 view (options)
                - Tab2 view (information text)
        

Je peux naviguer correctement de mon MainView à mon point de vue côté Flip, qui est aussi le point de vue racine du contrôleur de navigation. De mon point de vue côté Flip, je pousse une seconde vue de mon contrôleur de navigation (voir Paramètres) qui est configuré pour afficher un UITabBarController, avec deux onglets, dès son chargement (avec viewDidLoad).

Si je retire le UITabBarController, je peux revenir sans problème à mon point de vue côté Flip en utilisant « popViewController » de mes paramètres voir. Le problème est si je charge le UITabBarController dans viewDidLoad dans mes paramètres ... voir les onglets fonctionnent parfaitement, mais je ne suis pas en mesure de revenir à mon point de vue côté bistables (vue racine du contrôleur de navigation) plus.

je peux retourner si j'utilise la barre de navigation du contrôleur de navigation, mais je veux configurer mes propres boutons et ont la barre de navigation cachée.

Jusqu'à présent, j'ai essayé les méthodes suivantes:

  • [self.navigationController popViewControllerAnimated: OUI];

  • [self.navigationController popToRootViewControllerAnimated: OUI];

  • [self.navigationController popToViewController: FlipSideViewController animé: OUI];

Mais ils ne semblent pas au travail. Les deux premiers ne rien faire (les restes d'écran comme il était), et le troisième ne reconnaît pas le « FlipsideViewController » (peut-être parce qu'il est un délégué du MainViewController?).

Y at-il un moyen de vérifier ce qui est en train de faire exactement le bouton « retour » de la barre de navigation si je l'activer?

dois-je utiliser les délégués?

Puis-je appeler une méthode popViewController dans mes paramètres vue depuis l'une des deux vues Tab?

Ceci est mon point de vue côté Flip:

- (IBAction)showSettingsView {
    SettingsViewController *controller = [[SettingsViewController alloc] initWithNibName:@"SettingsView" bundle:nil];
    controller.title = @"Settings";
    [self.navigationController pushViewController:controller animated:YES];
    [controller release];
}

Ceci est mon écran des paramètres:

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

Et la méthode pour revenir dans l'une des vues Tab:

- (IBAction)backFromTab1View {
    [self.navigationController popToViewController:FlipSideViewController animated:YES];
}

Merci beaucoup et désolé si la question est trop basique!

Était-ce utile?

La solution

En fait, je résolu le problème créant ma propre UINavigationBar dans l'écran des paramètres et l'utilisation:

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

qui insère le reste de la vue en dessous de la barre de navigation et je peux encore l'utiliser pour configurer un bouton qui apparaît la vue et revenir à l'écran précédent.

Il m'a fallu un certain temps pour se rendre compte des différences entre « addSubview » et « inserSubview + belowSubview ». Désolé à ce sujet!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top