Nascosto UINavigationController all’interno UITabBarController

Ho un’applicazione con 5 UIViewControllers ciascuno all’interno di un corrispondente UINavigationController, il tutto nascosto all’interno di un UITabBarController che visualizza 5 schede nella parte inferiore dello schermo.

Voglio visualizzare un altro UIViewController (all’interno di un UINavigationController) quando una finestra di dialogo viene premuto il pulsante.

Questo punto di vista dovrebbe essere caricati e scaricati a livello di programmazione; vale a dire, non dovrebbe apparire nella barra delle schede. Tuttavia, voglio la barra della scheda sia visibile sempre.

Se posso aggiungere la [UINavigationController view] per [self window] il UITabBar è coperto. Se posso aggiungere a qualsiasi altro livello, la UINavigationController aggiunge il risarcimento per la barra di stato viene visualizzato così più in basso rispetto al previsto.

Una soluzione sarebbe quella di avere il 6 UINavigationController aggiunto al UITabBar con gli altri, ma con la sua tabBarItem nascosti. Quindi posso mostrare e nascondere utilizzando il tabBars selectedIndex proprietà.

Accesso tabBarItem attraverso il UIViewController mostra nessun modo ovvio per fare questo.


@wisequark, penso che hai completamente frainteso e si ha quasi riscritto l’architettura dell’applicazione. Tuttavia ho una controller di navigazione per ogni vista in quanto sono mutuamente esclusive, e non esiste il concetto di “drill-down”.

@Kendall, Questo è ciò che mi aspetto che devo fare – modale, appaiono con un pulsante nascondi per riportare il normale interfaccia. Ma sarebbe bello continuare a barra sempre visibile, quindi mi chiedevo se qualcuno sapesse di un modo.

InformationsquelleAutor adam | 2008-11-12



3 Replies
  1. 4

    Beh, sembra quello che si vuole veramente fare è presentare modale vista con la scheda bar ancora visibile. Si potrebbe aggiungere il vostro punto di vista come un sottoview tab bar controller di vista. La scheda della barra di vista è, stranamente, non la barra delle schede in sé, ma piuttosto una vista contenente la scheda di bar e selezionare l’elemento di visualizzazione.

    In alternativa, si potrebbe provare a chiamare presentModalViewController:animati: con il scheda selezionata (cioè [tabBarController.selectedViewController presentModalViewController:animati:]) come il ricevitore invece della barra delle schede. Mi sembra di ricordare di fare questo una volta (quasi per caso) e la scheda di bar è rimasto visibile.

    Un pensiero più: dal momento che ciascuna delle cinque view controller è un UINavigationController, si può sempre pushViewController:animati: su vista selezionata controller, quindi nascondere il pulsante indietro. La vostra vista sarà solo apparire senza animazione. Ma è necessario ricordarsi di inserire il controller di visualizzazione off lo stack ogni volta che l’utente passa a un’altra scheda. Che potrebbe richiedere un po ‘ di lavoro in più.

  2. 15

    Sembra come se si dispone di un pasticcio sulle vostre mani. Un UINavigationController è un distinto oggetto che è molto diverso da un UITabBarController. In generale, l’applicazione dovrebbe avere una scheda controller, una delle scheda carichi di un UINavigationController che a sua volta carica la vista – non che sia di mantenere la gestione e i diversi punti di vista. È anche improprio di riferimento per la visualizzazione di una UIViewController come tale oggetto non ha una rappresentazione visiva. Nel caso di un UINavigationController, il controller di navigazione oggetto è responsabile per la visualizzazione di una barra di navigazione e una tabella (nel caso più comune) e per la gestione, la visualizzazione di tutti i punti di vista nella gerarchia di navigazione. Esso non ha una corrispondente rappresentazione sullo schermo. Allo stesso modo, un UITabBarController presenta una scheda di bar ed è responsabile per il carico e lo scarico dei punti di vista e/o la visualizzazione di controller collegato alla scheda pulsanti. Se si dovesse presentare questo come un’immagine, sarebbe guardare qualcosa come questo –
    il testo alt http://img.skitch.com/20081112-2sqp7q4wafa34te1ga337u4k8.png

  3. 2

    L’idea migliore che ho potuto pensare è quella di spingere un modale controller di navigazione per il vostro punto di vista (e nascondere la barra delle schede che non si desidera), o per ottenere la tab bar controller di corrente selezionato view controller (davvero il tuo controller di navigazione per una scheda) e spingere il nuovo controller di visualizzazione in là – e poi pop che vedi quando un’altra scheda è selezionata con una barra delegato.

    Sembra strano per me, per spingere la vista sul casuali schede, però, se la vista è creato da visualizzata una finestra di dialogo modale, non vedo perché la vista non dovrebbe essere modale e nascondere le schede.

Lascia un commento