2015-02-06 20 views
5

Ho un controller di visualizzazione divisa in modalità orizzontale con due controller di navigazione.Rotazione del controller della vista divisa su iPhone 6 Plus

enter image description here

Questo crolla ad un singolo controller di navigazione in verticale e la vista di controllo dettagli viene spinto dal master.

enter image description here

Se ho ruotare di nuovo al paesaggio quando il controller vista di dettaglio viene spinta in verticale non capisco come mettere il controller vista di dettaglio di nuovo in essa la propria controller di navigazione.

enter image description here

risposta

4

Si dovrebbe implementare UISplitViewControllerDelegate. modo più semplice potrebbe essere quella di avere la propria classe MySplitViewController e porsi come delegato in viewDidLoad:

self.delegate = self; 

In primo luogo, si consiglia showDetailViewController a guardare qualcosa di simile:

- (BOOL) splitViewController:(UISplitViewController*)splitViewController showDetailViewController:(UIViewController*)vc sender:(id)sender 
{ 
    if (splitViewController.collapsed) 
    { 
     [(UINavigationController*)splitViewController.viewControllers[0]) pushViewController:vc animated:YES]; 
    } 
    else 
    { 
     self.viewControllers = @[ self.viewControllers.firstObject, vc ]; 
    } 
    return YES; 
} 

che dovrebbe prendersi cura di una corretta visualizzazione dei dettagli in entrambi gli orientamenti.

Successivamente, si dovrebbe attuare seguente metodo delegato simile a questo:

- (UIViewController*)    splitViewController:(UISplitViewController*)splitViewController 
separateSecondaryViewControllerFromPrimaryViewController:(UIViewController*)primaryViewController 
{ 
    UINavigationController* nc = primaryViewController; 
    UIViewController* detailVC = nc.viewControllers.lastObject; 
    return detailVC; 
} 

Questo metodo è la tua occasione di prendere quello che vuoi dal controllore primario e ritorno che, come regolatore di vista di dettaglio. Il codice di esempio sopra è piuttosto semplice, potrebbe essere necessario attraversare la visualizzazione di navigazioneControllori e selezionare tutto a partire dal controller di visualizzazione specifico (presumendo che tu abbia ricevuto spinte dalla visualizzazione dettagli).

In ogni modo, sarebbe davvero payoff di prendere tempo e leggere: UISplitViewController class reference e soprattutto UISplitViewControllerDelegate Protocol Reference Questo sarà molto più chiaro. Se si desidera una scorciatoia, dare un'occhiata al progetto del modello di controller della vista divisa Xcode. Quello dovrebbe anche contenere suggerimento o soluzione esatta per il tuo problema.