2014-10-06 16 views
6

wszystkimJak ukryć MasterView dla UISplitViewcontroller w systemów iOS 8

ja spotkałem problem z nowym UISplitViewcontroller w systemów iOS 8 dla iPada. Mam UITableView w storyboard w detailViewcontroller i po kliknięciu komórki, powinienem przejść do innego widoku o nazwie "detailinfo". Obecnie używam trybu "pokaż".

Jednak obecny segue wystarczy nacisnąć prawą część. Chcę to pokazać na pełnym ekranie, ale nie wiem jak to zrobić, próbowałem używać właściwości preferredDisplayMode z splitViewController, wynikiem jest po prostu ukryć widok główny, ale nie zmieniłem rozmiaru detailView. Nie chcę używać teraźniejszości jako modalu.

obecny sposób robie to

 - (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; 
     } 

    } 
} 

aw viewDidAppear korzystając

- (void)viewDidAppear:(BOOL)animated { 

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

Będzie to działać, ale masterViewController będzie „Wyskocz”, który ma bardzo zły wpływ wizualny. Nadzieja może uzyskać pomoc, dziękuję

Odpowiedz

4

UISplitViewController to złożony kontroler widoku, który składa się z dwóch kontrolerów widoku dziecka. Więc kiedy użyjesz jakiegoś przełącznika, który jest dodany do dowolnego kontrolera widoku podrzędnego, poprosisz kontrolkę widoku dziecka, aby wykonał segue. Ten kontroler widoku podrzędnego ma częściową kontrolę nad aktywnym oknem.

W twoim przypadku musisz poprosić kontroler widoku podzielonego, aby wykonał segue. Powinieneś więc dodać segue do kontrolera widoku podzielonego, który obsługuje aktywne okno. W ten sposób będziesz miał opcję pełnoekranową.

UPDATE

Jeśli nie chcę za pomocą obecny jako modalnym i chcą uniknąć „Wyskocz” efekt można ukryć mistrza stosując animację

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

U r rację, muszę poprosić splitviewcontroller aby przeprowadzić segue –

Powiązane problemy