2014-10-06 18 views
6

Tutti,Come nascondere Masterview per UISplitViewcontroller in iOS 8

ho incontrato un problema con la nuova UISplitViewcontroller in iOS 8 per iPad. Ho un UITableView nello storyboard nel detailViewcontroller e quando clicco sulla cella, dovrei andare a un'altra vista chiamata "detailinfo". Sto usando un "show" corrente.

Tuttavia, il corrente segue semplicemente premere sulla parte destra. Voglio vederlo a schermo intero, ma non so come farlo, ho provato ad usare la proprietà preferredDisplayMode di splitViewController, il risultato è semplicemente nascondere la vista principale ma non ridimensionare il detailView. Non voglio usare il presente come modale.

attuale modo che sto facendo è

 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    if([[segue identifier]isEqualToString:@"showStudentDetail"]){ 

     if(self.traitCollection.horizontalSizeClass != UIUserInterfaceSizeClassCompact){ 
      UISplitViewController *splitViewController = (UISplitViewController *)self.navigationController.parentViewController; 
      splitViewController.preferredDisplayMode = UISplitViewControllerDisplayModePrimaryHidden; 
     } 

    } 
} 

e in viewDidAppear, utilizzando

- (void)viewDidAppear:(BOOL)animated { 

    if(self.traitCollection.horizontalSizeClass != UIUserInterfaceSizeClassCompact){ 
     UISplitViewController *splitViewController = (UISplitViewController *)self.navigationController.parentViewController; 
     splitViewController.preferredDisplayMode = UISplitViewControllerDisplayModeAutomatic; 
    } 
} 

Ciò funzionerà, ma il masterViewController sarà "Jump out", che ha un effetto visivo molto male. Hope può ricevere aiuto, grazie

risposta

4

UISplitViewController è un controller di visualizzazione complesso costituito da due controller di visualizzazione figlio. Pertanto, quando si utilizza un seguito aggiunto a uno qualsiasi dei controller della vista figlio, si chiede al controllore della vista figlio di eseguire il seguito. E questo controller vista figlio ha il controllo parziale della finestra attiva.

Nel tuo caso è necessario chiedere al controller della vista divisa di eseguire il seguito. Quindi dovresti aggiungere il seguito al tuo controller della vista divisa che gestisce la finestra attiva. In questo modo avrai l'opzione a schermo intero.

UPDATE

Se non vuoi utilizzare presente come modale e vuole evitare di "Jump out" effetto che si può nascondere master utilizzando l'animazione

UISplitViewController *splitViewController = [self splitViewController]; 
[UIView animateWithDuration:0.25 animations:^{ 
    splitViewController.preferredDisplayMode = UISplitViewControllerDisplayModePrimaryHidden; 
} completion:^(BOOL finished) { 
    [splitViewController showDetailViewController:vc sender:nil]; 
}]; 
+0

U r a destra, ho bisogno di chiedere lo splitviewcontroller per eseguire il seguito –

Problemi correlati