Swift:将UIBarButtonItem设置为弹出窗口的源而没有点击?

问题描述 投票:0回答:1

我想在视图加载后立即在iPad上显示一个弹出窗口,在右上角有一个按钮作为源。单击按钮时,弹出窗口可以正确显示,但是在第一次加载页面时,我很难找到一种无需单击按钮即可显示的弹出窗口。这可能吗?

这是我所拥有的:

func displayOptions(sourceButton: UIBarButtonItem)
    let actionSheet = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)
    if let popoverController = actionSheet.popoverPresentationController {
        var rect = CGRect(x: 0, y: 0, width: 0, height: 0)              
        popoverController.barButtonItem = sourceButton              
        popoverController.sourceRect = rect 
        popoverController.permittedArrowDirections = .up
    }
    viewController.present(actionSheet, animated: true, completion: nil)
}

此代码在单击按钮时正常工作,但是如果我尝试从viewDidLoad或viewDidAppear调用此函数,则应用程序将崩溃:>

您必须通过警报控制器的popoverPresentationController提供此弹出窗口的位置信息。您必须提供sourceView和sourceRect或barButtonItem。

我想在视图加载后立即在iPad上显示一个弹出窗口,在右上角有一个按钮作为源。点击按钮后,弹出窗口会正确显示,但是我很难找到一种方法......>

swift uipopoverpresentationcontroller
1个回答
0
投票

您需要提供sourceView。添加以下行并执行!

popoverController.sourceView = self.view //to set the source of your alert
© www.soinside.com 2019 - 2024. All rights reserved.