Domanda

Sto costruendo un programma basato sul modello di utilità da Xcode, a cui ho aggiunto alcuni più punti di vista. La mia struttura dell'applicazione potrebbe essere il seguente:

  • MainView (il menu delle applicazioni)

    • Vista Flip-side (un calcolatore)

    • UINavigationController

    • impostazioni di visualizzazione

      • viewDidLoad: UITabBarController

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

I può navigare in modo corretto dal mio MainView a mio avviso flip-side, che è anche la vista principale del controller di navigazione. Dal mio punto di vista Flip-side, spingo una seconda vista del mio Navigation Controller (vedi Impostazioni) che è configurato per mostrare un UITabBarController, con due schede, non appena carichi (con viewDidLoad).

Se rimuovo l'UITabBarController, posso tornare senza problemi a mio avviso flip-side usando "popViewController" da Visualizza il mio Impostazioni. Il problema si presenta se carico l'UITabBarController in viewDidLoad nelle mie impostazioni di visualizzazione ... le schede funzionano perfettamente, ma non sono in grado di tornare al mio punto di vista flip-side (vista principale del controller di navigazione) più.

posso tornare se uso nella barra di navigazione del controller di navigazione, ma voglio configurare il mio pulsanti e hanno la barra di navigazione nascosto.

Finora ho provato i seguenti metodi:

  • [self.navigationController popViewControllerAnimated: YES];

  • [self.navigationController popToRootViewControllerAnimated: YES];

  • [self.navigationController popToViewController: FlipSideViewController animato: YES];

, ma non sembra funzionare. I primi due semplicemente non fare nulla (lo schermo rimane come lo era), e il terzo non riconosce il "FlipsideViewController" (forse perché è un delegato del MainViewController?).

C'è un modo per verificare ciò che è esattamente facendo il pulsante "indietro" della barra di navigazione se attivo esso?

dovrei usare i delegati?

Posso chiamare un metodo popViewController nelle mie impostazioni di visualizzazione da una qualsiasi delle due visioni Tab?

Questa è la mia vista flip-side:

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

Questo è il mio impostazioni di visualizzazione:

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

E il metodo per tornare in una delle viste Tab:

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

Grazie mille e scusate se la domanda è troppo semplice!

È stato utile?

Soluzione

In realtà ho risolto il problema creando la mia UINavigationBar nel visualizzare le impostazioni e l'utilizzo di:

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

che inserisce il resto della vista sotto la barra di navigazione e ancora posso usarlo per configurare un pulsante che apre la vista e tornare alla schermata precedente.

Ci ho messo un po 'a capire le differenze tra "addSubview" e "inserSubview + belowSubview". Mi dispiace per questo!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top