2014-10-07 23 views
7

Moje standardowe wdrożenie dla tej metody delegatów jest następujące. Właśnie zainicjowałem przycisk nawigacji i zapisałem lokalnie przycisk i popover.Jak zastąpić nieaktualną metodę splitViewController: willHideViewController: withBarButtonItem: forPopoverController:

- (void) splitViewController: (UISplitViewController *) splitController 
     willHideViewController: (UIViewController *)  viewController 
      withBarButtonItem: (UIBarButtonItem *)  barButtonItem 
     forPopoverController: (UIPopoverController *) popoverController 
{ 
    // Set the button to open the PopOver 
    barButtonItem.title = viewController.title; 
    [self.navigationItem setLeftBarButtonItem:barButtonItem animated:YES]; 

    // Save the ref to the default left navigation button 
    _masterButton = barButtonItem; 

    // Save the ref to the PopOver 
    _masterPopOver = popoverController; 
} 

Od iOS 8 Metoda ta jest przestarzała i dokumentacja Apple mówi:

Wdrożenie splitViewController: willChangeToDisplayMode: zamiast metody.

Ale argumenty nowej metody nie ma nic wspólnego z nieaktualnych metody! Chyba muszę sam stworzyć przycisk i popover?

Czy ktoś już wykonał to ponowne kodowanie, aby zaimplementować bieżące zachowanie wyskakujące okienek?

Dziękuję za pomoc

+0

Czy znalazłeś jakieś odpowiedzi na ten problem? Szukasz tego samego! – lionserdar

+1

Jeszcze nie. Chyba będę musiał sam wykonać tę pracę. Nie jest to dla mnie zbyt pilne, ale jak tylko wykonam pracę, umieszczę ją tutaj. – PatrickV

Odpowiedz

11

przyjrzeć displayModeButtonItem. Jest bardzo podobny do barButtonItem z nieaktualnej metody.

Można byłaby swój przykład do korzystania z nowego splitViewController: willChangeToDisplayMode: metodę w następujący sposób:

- (void)splitViewController:(UISplitViewController *)svc 
    willChangeToDisplayMode:(UISplitViewControllerDisplayMode)displayMode { 

    if (displayMode == UISplitViewControllerDisplayModePrimaryHidden) { 
     self.navigationItem.leftBarButtonItem = svc.displayModeButtonItem; 
    } 
} 
+1

Ale nie ma zdefiniowanego 'leftBarButtonItem'. Jak to zrobić? –

+0

Dzięki - Kod jest kompletny, wystarczy skopiować i przejść do widoku szczegółów. –

1

Jest to rozszerzenie do odpowiedzi Aleksandra. Aby ukryć komentarz Cihad: ostatnia linia kodu tworzy leftBarButtonItem i sprawia, że ​​jest to niebieski przycisk "<", który otworzy główny viewController.

Właśnie skomentowałem willHideViewController i willShowViewController z mojego widoku szczegółówController i wycinam i wklejam kod Alexandra. Pracował po raz pierwszy.

Potem odkryłem, że jeśli uruchomię aplikację w trybie portretowym, nie będzie działać, dopóki nie przejdę w krajobraz i nie powrócę do portretu. Oczywiście metoda nie jest wywoływana aż do zmiany orientacji.

Więc dodałem ten kod w moim metoda viewDidLoad mojego szczegółowo viewController i działał prawidłowo:

 //Set up the splitview controller 
    if (self.splitViewController.displayMode == UISplitViewControllerDisplayModePrimaryHidden) { 
     self.navigationItem.leftBarButtonItem = self.splitViewController.displayModeButtonItem;} 

splitViewController jest właściwością swojej szczegółowo viewController które powinny być tam do użycia.