2010-09-23 5 views
7

Sto seguendo questo esempio: http://doronkatz.com/ipad-programming-tutorial-hello-world. Questo esempio funziona alla grande.Aggiungere il controllo di navigazione alla vista di dettaglio in splitview

Ora voglio 3 schede nello splitview e per ogni scheda un nuovo controller di navigazione. Ma non so come implementarlo. Vado a questo codice:

- (void)setDetailItem:(id)newDetailItem { 
if (detailItem != newDetailItem) { 
    [detailItem release]; 
    detailItem = [newDetailItem retain]; 

    // Update the view. 
    navigationBar.topItem.title = detailItem; 

    if ([detailItem isEqualToString:@"Test"]) { 
     TestViewController *testViewController = [[TestViewController alloc] initWithNibName:@"TestView" bundle:nil]; 
     [self.navigationController pushViewController:testViewController animated:NO]; 
     [mapViewController release]; 

    } 
    if ([detailItem isEqualToString:@"Test2"]) { 

    } 

} 

if (popoverController != nil) { 
    [popoverController dismissPopoverAnimated:YES]; 
}   

Ma so che in realtà non c'è bisogno di usare 'pushviewcontroller', voglio solo un nuovo navigationController a partire da quel punto, e così per ogni scheda nella SplitView. Come posso realizzare questo? So che è molto semplice, ma non riesco a capirlo.

Grazie.

+0

Qui si può fare questo semplice controller di navigazione aggiungendo utilizzando e aggiungere visualizzazione secondaria alla vista di base. Se trovi qualche problema, per favore fammelo sapere. Mi piacerebbe risolvere questo problema per te. – AppAspect

risposta

0

Se ho capito bene, hai un UISplitViewController e desideri avere tre UINavigationControllers come viste di dettaglio. In tal caso, il seguente funziona se implementato nella classe UISplitViewController:

if ([detailItem isEqualToString:@"Test"]) { 

     TestViewController *testViewController = [[TestViewController alloc] initWithNibName:@"TestView" bundle:nil]; 

     //since self.viewControllers is immutable, let's make our own temporary copy. 
     NSMutableArray *tempArray = [self.viewControllers mutableCopy]; 

     //switcheroo with the new view controller 
     [tempArray replaceObjectAtIndex:1 withObject:testViewController]; 

     // our new view controller is retained by the array, so let's release it 
     [testViewController release]; 

     //set the new array to be displayed 
     self.viewControllers = tempArray; 

     //clean up - out mutableCopy returns a retained object 
     [tempArray release]; 


    } 
2

quanto ho capito la vostra esigenza, si vuole un controller della vista divisa come controller principale. Il pannello di sinistra selezionerà un elemento e la giusta vista di dettaglio per quell'elemento conterrà 3 schede. Ogni scheda avrà un controller di navigazione. L'app store segue un modello simile alla vista di dettaglio.

È importante strutturare i controller come un albero.

  • radice: Split View Controller
    • visualizzazione elenco: tavolo controllore (MasterViewController per la selezione di frutta)
    • vista di dettaglio: controller di scheda (tutte le informazioni su di anguria)
      • TAB1: controller di navigazione
        • pagina 1: primo controller radice della scheda (cronologia dei cocomeri)
      • Tab2: controller di navigazione
        • pagina 1: regolatore radice prima scheda (mappa delle aziende agricole di cocomero)
      • TAB3: controller di navigazione
        • Pagina3: primo controller scheda root (ricette cocomero)

Con questo modello è possibile creare la struttura del controller su viewDidLoad, ma modificare i contenuti di pagina 1, 2, 3 quando si risponde a setDetailItem UINavigatorContoller ha un popToRootViewController Un messaggio che può reimpostare lo stack del controller di navigazione precedente per ciascuno dei 3 controller di navigazione. Quando ho iniziato a studiare lo sviluppo di ios, ho trovato la possibilità di impostare le gerarchie del controller in codice più facilmente che usare l'interfaccia builder. IB è più veloce una volta ottenuti i concetti. È comunque possibile creare un controller di pennino IB per i controller di pagina radice 1,2,3.

buon riferimento: http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/Introduction/Introduction.html#//apple_ref/doc/uid/TP40007457

Problemi correlati