如何在IOS中将UIBarButtonItem设置为弹出窗口的锚点?

Tom*_*Tom 15 popover uibarbuttonitem ipad ios

我在我的iPad应用程序中显示一个弹出控制器:

[self.programMapPopOver presentPopoverFromRect:anchor.frame
                        inView:anchor.superview
                        permittedArrowDirections:UIPopoverArrowDirectionAny 
                        animated:YES];
Run Code Online (Sandbox Code Playgroud)

我的问题是锚:我想设置一个UIBarButtonItem*作为它的锚点,但它不是UIView*,但是inView是一个view*参数.

我怎么解决这个问题?

谢谢大家!

Lev*_*lum 52

在iOS 8和9中,presentPopoverFromBarButtonItem:permittedArrowDirections:animated:不推荐使用该方法.您需要barButtonItem在视图控制器的popoverPresentationController属性上设置该属性.

let popover = UIViewController()
popover.modalPresentationStyle = .Popover
if let presentation = popover.popoverPresentationController {
    presentation.barButtonItem = navigationItem.rightBarButtonItem
}
presentViewController(popover, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)


Sco*_*ets 23

你需要使用presentPopoverFromBarButtonItem:permittedArrowDirections:animated:.

  • 请注意,此方法在iOS 9中已弃用.在弹出窗口的iOS 9实现中,有一个等效的[`barButtonItem`](https://developer.apple.com/reference/uikit/uipopoverpresentationcontroller/1622314-barbuttonitem)属性一个`UIPopoverPresentationController`. (12认同)