Caricamento UINavigationController da un altro pennino automaticamente UITabBarController

StackOverflow https://stackoverflow.com/questions/883510

  •  22-08-2019
  •  | 
  •  

Domanda

Credo di aver trovato la causa: finestra Info documento in IB ha un avvertimento: " 'Selected Navigation Controller (secondo)' ha nome pennino proprietà impostata su 'SecondView.nib', ma questo controller della vista è non destinato ad avere la sua vista insieme in questo modo. "

Bummer.


pennino

Ho costruito in Interface Builder, che ha UITabBarController a livello alto e passa tra UINavigationControllers.

Funziona bene quando tutto è in un unico file nib, ma mi piacerebbe utilizzare i file nib separate per UINavigationControllers.

A partire dal modello TabBar di Apple, se mi limito a cambiare classe di SecondView a UINavigationController, tutto si rompe:

seconda pennino

e tutto quello che ottiene è questo:

// imgur has lost the image, sorry //

E 'possibile avere file separato per UINavigationController senza impostare a livello di codice tutto?

Vorrei TabBarController per gestire il carico e scarico dei pennini.

È stato utile?

Soluzione

È sufficiente scambiare l'UINavigationController con il FirstViewController.

Quindi, la gerarchia dovrebbe essere simile a questo:

Tab bar controller
-----Tab bar
-----Navigation Controller
----------First View Controller
---------------Navigation Item
----------Tab bar item (First)
-----Navigation Controller
----------Second View Controller
---------------Navigation Item
----------Tab bar item (Second)

È possibile impostare il pennino di primo View Controller nella finestra di ispezione al file pennino che contiene la vista oggetti reali (Dal momento che si sta cercando di dividerli in file separati, che è una buona cosa).

Avete una scheda, quella scheda ha un controller di navigazione che carica First View Controller come suo punto di vista di root.

Fatto.

Altri suggerimenti

Non ho provato ad installare UINavigationController tramite IB. Ho schermi multipli, ciascuno è memorizzato in xib separata e c'è una corrispondente classe che estende UIViewController. In applicationDidFinishLaunching inizializzo UIViewControllers utilizzando XI ter del ma poi creare manualmente UINavigationController, aggiungo vista del controller di navigazione per finestra e spingere prima vista controller di navigazione.

Non sono sicuro se questo aiuta.

- (void)applicationDidFinishLaunching:(UIApplication *)application {    

    navigationController = [[UINavigationController alloc] init];

    FirstViewController * viewController = [[FirstViewController alloc] 
                                           initWithNibName:@"FirstView"
                                                    bundle:nil];
    [navigationController pushViewController:viewController animated:NO];
    [viewController release];
    [window addSubview:navigationController.view];
    [window makeKeyAndVisible];
}

Sopra FirstViewController estende UIViewController, in IB si crea la visualizzazione quindi impostare classe di appartenenza del file per la classe (ad esempio qui FirstViewController) e collegare vista proprietario del file alla visualizzazione del UIView.

Credo che siete alla ricerca di qualcosa di simile. Si potrebbe sostituire "qualunque" con il nome di voi secondo file pennino.

newNavController = [[UINavigationController alloc] initWithNibName:@"whatever" bundle:[NSBundle mainBundle]];

In primo luogo, sembra che hai il tuo UITabBarItems in i controllori di navigazione invece che direttamente sotto il UITabBarController. Che può essere parte del problema.

In secondo luogo, quando si aggiunge un UITabBarController in IB e poi cliccare sulla sua icona nella vostra lista di oggetti di primo livello (il vostro primo screenshot), gli attributi ispettore permetterà di cambiare il tipo di controller della vista per ciascuna delle schede . Usando questo, tutti loro si può cambiare a controller di navigazione, se lo si desidera. Inoltre, dal momento che si voleva caricare le visualizzazioni personalizzate e visualizzare i controllori di altri pennini, se si guarda alla sezione "View Controller" nella parte inferiore della finestra di ispezione attributi, è possibile selezionare un pennino dal progetto per caricare la vista da. Supponendo "Manuale di file" di quel pennino è impostato per la sottoclasse UINavigationController, si deve tutto bene il lavoro.

Tutto questo senza una grande quantità di codifica di lavoro, sia. Fatemi sapere se vuoi le immagini per quello che sto parlando nel caso in cui non riesci a trovare questi pannelli.

Ho trovato gli stessi warning.I hanno mantenuto tutta controller della vista in file XI ter separati. Mi sono liberato fuori di esso, eliminando pennino nome e mantenendolo vuota.

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