2013-10-26 13 views
5

Ho la seguente configurazione nella mia app: Il mio controller di visualizzazione iniziale è un UITabBarController. le schede:Utilizzo di più copie dello stesso controller di visualizzazione in uno storyboard

1) UINavigationController-> PostListVC
2) UINavigationController-> CategoriesListVC
3) UINavigationController-> PostListVC
4) UINavigationController-> PostListVC
5) UINavigationController-> MoreViewController

Come puoi vedere, 3 schede contengono la stessa classe viewController, ma non dovrebbero contenere lo stesso oggetto controller di visualizzazione: la visualizzazione mostrerà informazioni diverse in base alle informazioni ottenute da AppDelegate.

Quello che ho fatto è che ho creato 5 UINavigationControllers, li ho collegati a uitabbarcontroller, quindi ho creato un rootViewController segue per 3 di essi alla stessa vista PostListVC - in questo modo non ho bisogno di mantenere 3 disegni della stessa vista.

Il problema che ottengo è che solo il primo PostListVC viene creato correttamente (il più a sinistra nella barra delle schede) - le altre schede che puntano a un PostListVC mostrano solo uno schermo nero.

Ho cercato di illustrare il modo in cui wire-up storyboard usando un esempio 3-tab: enter image description here
Come si può vedere, sia la superiore più e-più bassi viste sono collegati a PostListVC.

Non so quale sia il problema. Presumo che io stia usando gli storyboard in modo un po 'sbagliato.

Qualcuno sa come posso risolvere questo problema?

Grazie!

EDIT: ho creato un semplice, esempio di progetto (Xcode 5) che illustartes questo problema:

http://www.speedyshare.com/Srwfg/TabBarProblem.zip

EDIT 2: Una versione modificata dell'esempio, che mostra il problema con la soluzione offerta: http://speedy.sh/JkdGC/TabBarProblem-2.zip

Non esiste alcun modo per creare tabBarItem diversi con questo metodo, e non c'è modo di posizionare i barItems in modo che non siano in una riga, anche se si tenta di ignorare l'ordine dei follower.

+0

Non ci sono abbastanza informazioni qui per qualcuno da aiutare ma nulla nell'immagine suggerisce un errore. Suggerisco di aggiungere alcuni 'NSLog's a ciascun View Controller (probabilmente' viewDidLoad') per assicurarsi che le informazioni corrette vengano passate e che venga istanziata la classe UIViewController corretta. Nota che ognuno dovrebbe essere unico. È l'unico modo per eseguire il debug di qualcosa di così complesso. –

+0

Sia viewDidLoad che loadView vengono richiamati solo una volta - Probabilmente il PostListVC non viene istanziato correttamente, ma non so perché. – Niv

+0

Alcune cose da verificare: la classe è impostata correttamente all'interno di IB? Cosa ne dice NSLog in PostListVC? La vista è collegata in IB? Non sono sicuro di poter aiutare oltre queste domande. –

risposta

0

Come hai detto, hai bisogno di tre diverse istanze di PostListVC, quindi dovresti creare tre diversi viewcontrollers di tipo PostListVC e connettere ciascuna scheda a se stessa. La classe è la stessa, ma ogni scheda ha la sua istanza.

+4

C'è un modo per rendere tutti i 3 condividono lo stesso xib? Attualmente tengo tutto il disegno all'interno dello storyboard – Niv

0

Ho il tuo programma di esempio per funzionare MA non so se la soluzione funzionerà per il tuo progetto completo. Spero che ti metta sulla giusta rotta.

La soluzione è di avere ONE (1) controller di navigazione/vista radice incorporata ma TWO (2) passa dal controller della barra delle schede.Ecco la foto:

enter image description here

Sembra che ci sia un problema con più UINavigationController s collega allo stesso UIViewController. Ma nessun problema con lo stesso UINavigationController che si collega allo stesso UIViewController a condizione che vengano istanziati separatamente tramite lo UITabBarController.

+2

Ho ottenuto anche questa soluzione: 1) In questo modo non è possibile creare diversi tabBarItem per le diverse viste (ad esempio se si hanno immagini diverse per i pulsanti) . 2) Raggruppa i barItems - non è possibile aggiungere un altro tabBarItem tra i 2 che si collegano allo stesso viewController. (Esempio di questo problema aggiunto in EDIT 2) – Niv

Problemi correlati