2013-06-04 5 views
10

I zeigen eine popover Controller in meinem IPad App:Wie kann ich UIBarButtonItem als Anker eines Popover in IOS festlegen?

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

Mein Problem ist mit Anker: ich eine UIBarButtonItem setzen möchten * als Anker, aber es ist nicht ein UIView *, aber INview ist ein Ansicht * Parameter.

Wie kann ich das lösen?

Danke an alle!

Antwort

20
+0

Vielen Dank, ich habe diese Methode nicht bemerkt, ich habe nur auf andere konzentriert und versucht, die Aussicht zu bekommen. – Tom

+3

Beachten Sie, dass diese Methode in iOS 9 veraltet ist. In der iOS 9-Implementierung von Popovers gibt es eine äquivalente Eigenschaft ['barButtonItem'] (https://developer.apple.com/reference/uikit/uipopoverpresentationcontroller/1622314-barbynamitem) auf einem 'UIPopoverPresentationController'. –

35

In iOS 8 & 9 ist die presentPopoverFromBarButtonItem:permittedArrowDirections:animated: Methode veraltet. Sie sollten die Eigenschaft barButtonItem auf der Eigenschaft popoverPresentationController des View-Controllers festlegen.

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

Tolles Mädchen !!! Du sparst meinen Tag. – t4nhpt

+1

Es funktioniert nicht von mir in Swift3 mit iOS 10 Version. Es zeigt Vollbildansicht Controller. Was soll ich ändern? – Satyam

+0

nur set popover.popoverPresentationController? .barButtonItem = navigationItem.rightBarButtonItem das funktioniert für mich. – commando24