【问题标题】:How Can I set UIBarButtonItem as anchor of a popover in IOS?如何在 IOS 中将 UIBarButtonItem 设置为弹出框的锚点?
【发布时间】:2013-05-31 00:52:34
【问题描述】:

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

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

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

我该如何解决这个问题?

谢谢大家!

【问题讨论】:

    标签: ios ipad uibarbuttonitem popover


    【解决方案1】:

    在 iOS 8 和 9 中,presentPopoverFromBarButtonItem:permittedArrowDirections:animated: 方法已被弃用。您需要在视图控制器的 popoverPresentationController 属性上设置 barButtonItem 属性。

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

    【讨论】:

    • 它在 iOS 10 版本的 Swift3 中对我不起作用。它显示全屏视图控制器。我应该改变什么?
    • 只需设置 popover.popoverPresentationController?.barButtonItem = navigationItem.rightBarButtonItem 这对我有用。
    • @Satyam 这同样的事情也发生在我身上。我无法呈现任何以 UINavigationController 作为根的弹出框。我删除了 UINavigationController 并将根 VC 显示为弹出框,它似乎可以工作
    【解决方案2】:

    【讨论】:

    • 非常感谢,我没有注意到这个方法,我只是专注于其他并试图获得视图。
    • 请注意,此方法在 iOS 9 中已弃用。在 iOS 9 的弹出框实现中,UIPopoverPresentationController 上有一个等效的 barButtonItem 属性。
    猜你喜欢
    • 1970-01-01
    • 2016-03-06
    • 1970-01-01
    • 1970-01-01
    • 2014-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多