2013-06-04 17 views
10

pokażę kontroler popover w mojej aplikacji iPad:Jak ustawić UIBarButtonItem jako kotwicę popover w IOS?

[self.programMapPopOver presentPopoverFromRect:anchor.frame 
         inView:anchor.superview 
         permittedArrowDirections:UIPopoverArrowDirectionAny 
         animated:YES]; 

Mój problem jest z kotwicą: Chciałbym ustawić UIBarButtonItem * jako kotwicy, ale nie jest to UIView *, ale to Inview zobacz parametr *.

Jak mogę to rozwiązać?

Dziękuję wszystkim!

Odpowiedz

20
+0

Dziękuję bardzo, nie zauważyłem tej metody, po prostu skupiłem się na innych i próbowałem uzyskać pogląd. – Tom

+3

Należy zauważyć, że ta metoda została uznana za przestarzałą w systemie iOS 9. W implementacji poploów w systemie iOS 9 istnieje odpowiednik właściwości ['barButtonItem'] (https://developer.apple.com/reference/uikit/uipopoverpresentationcontroller/1622314-barbuttonitem) na "UIPopoverPresentationController". –

35

W iOS 8 & 9, metoda presentPopoverFromBarButtonItem:permittedArrowDirections:animated: jest przestarzała. Będziesz chciał ustawić właściwość barButtonItem we właściwości kontrolera widoku popoverPresentationController.

let popover = UIViewController() 
popover.modalPresentationStyle = .Popover 
if let presentation = popover.popoverPresentationController { 
    presentation.barButtonItem = navigationItem.rightBarButtonItem 
} 
presentViewController(popover, animated: true, completion: nil) 
+0

Świetna dziewczyna !!! Uratujesz mój dzień. – t4nhpt

+1

To nie działa ze mnie w wersji Swift3 z iOS 10. Pokazuje kontroler widoku na pełnym ekranie. Co mam zmienić? – Satyam

+0

wystarczy ustawić popover.popoverPresentationController? .barButtonItem = navigationItem.rightBarButtonItem to działa dla mnie. – commando24

Powiązane problemy