UIBarButtonItem为popoverPresentationController提供了错误的框架

pab*_*ros 2 uibarbuttonitem ios uipopover swift

我有一个工具栏,UIBarButtomItem左边有一个标签Admin

在此输入图像描述

我需要在点击它时显示一个弹出窗口,但它出现在错误的位置,它出现在屏幕的左上角:

在此输入图像描述

这是打开popover的功能:

// this IBAction is assigned only to the Admin bar button item
@IBAction func openAdmin(sender: UIBarButtonItem) {
    let alertController = UIAlertController(title: nil, message: "Elige una opción", preferredStyle: .ActionSheet)

    // action button initializations... ... ...

    let barButtonItemSize = sender.valueForKey("view")

    alertController.popoverPresentationController?.sourceView = self.view
    alertController.popoverPresentationController?.sourceRect = barButtonItemSize!.frame

    presentViewController(alertController, animated: true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)

当我触摸管理栏按钮时,我也会在控制台上收到此警告:

快照未呈现的视图会导致空快照.确保在屏幕更新后快照或快照之前至少渲染了一次视图

我究竟做错了什么?或者我需要做什么才能在管理员的顶部显示popover?

Lio*_*ion 5

更换

alertController.popoverPresentationController?.sourceView = self.view
alertController.popoverPresentationController?.sourceRect = barButtonItemSize!.frame
Run Code Online (Sandbox Code Playgroud)

alertController.popoverPresentationController?.sourceView = sender
alertController.popoverPresentationController?.barButtonItem = sender
Run Code Online (Sandbox Code Playgroud)