【问题标题】:Popover covers entire screen iOSPopover 覆盖整个屏幕 iOS
【发布时间】:2017-08-31 20:11:14
【问题描述】:

我正在尝试实现一个弹出框,其锚点是我的 iphone 应用程序的条形按钮项。我已经通过配置为“显示为弹出框”的 segue 路径将条形按钮项连接到视图控制器。我还为视图控制器设置了自己的大小并选择了“使用首选显式大小”。根据之前关于这个类似主题的帖子,我为我的弹出框实现了以下代码。但是,弹出框仍然覆盖整个屏幕,可能是因为我的adaptivePresentationStyle 方法没有被调用(“hello”没有打印到屏幕上)。请注意,我还实现了 UIPopoverPresentationControllerDelegate。我哪里做错了?

        override func prepare (for segue: UIStoryboardSegue, sender: Any?) {

        if segue.identifier == "popoverLogin" {

        let popoverViewController = segue.destination
        popoverViewController.modalPresentationStyle = UIModalPresentationStyle.popover
        popoverViewController.popoverPresentationController!.delegate = self         }
}

// MARK: - UIPopoverPresentationControllerDelegate method
func adaptivePresentationStyle(for controller: UIPresentationController, traitCollection: UITraitCollection) -> UIModalPresentationStyle {
    // Force popover style
    print ("hello")
    return UIModalPresentationStyle.none
        }

谢谢!

【问题讨论】:

    标签: ios swift viewcontroller uibarbuttonitem popover


    【解决方案1】:

    在我的情况下,您的代码可以正常工作并且弹出框显示正常!

    确保您的 segue 具有正确的“种类”:“Present As Popover”。

    【讨论】:

    • 是的。我也添加了这一点。我的视图控制器仍然覆盖整个屏幕。 @Alexander Goncharov
    • 是的。也试过了!我的 popover Viewcontroller 仍然覆盖整个屏幕
    • 尝试设置属性popoverViewController.preferredContentSize = CGSizeMake(100, 100)
    • 我添加了 popoverViewController.preferredContentSize = CGSize(100, 100) 因为 CGSizeMake 不存在。由于某种原因,弹出框仍然覆盖整个屏幕。我认为问题在于我的自适应方法没有被调用,因为“hello”没有打印到终端
    • 更新了我的答案
    猜你喜欢
    • 2015-09-22
    • 1970-01-01
    • 2021-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-22
    相关资源
    最近更新 更多