【问题标题】:iOS 9 Presenting Popover takes full screeniOS 9 Presenting Popover 全屏
【发布时间】:2016-08-03 18:15:19
【问题描述】:

我正在尝试展示一个 PopOver 视图控制器,特别是在 TextField 旁边显示一个小的过滤器屏幕。但是它显示为全屏视图控制器。 filters_button 是应该触发弹出窗口的按钮。有什么想法为什么会像普通 ViewController 一样显示全屏?

func showFilters(){
    let tableViewController = UITableViewController()
    tableViewController.modalPresentationStyle = UIModalPresentationStyle.Popover
    tableViewController.preferredContentSize = CGSizeMake(20, 20)

    presentViewController(tableViewController, animated: true, completion: nil)

    let popoverPresentationController = tableViewController.popoverPresentationController
    popoverPresentationController?.sourceView = filters_button
    popoverPresentationController?.sourceRect = CGRectMake(0, 0, filters_button.frame.size.width, filters_button.frame.size.height)
}

func adaptivePresentationStyleForPresentationController(controller: UIPresentationController) -> UIModalPresentationStyle {
    return .None
}

注意:在我的班级顶部,我声明它符合“UIPopoverPresentationControllerDelegate”协议

【问题讨论】:

  • @Lu_ Apple 已弃用 iOS 8.3 中的操作表
  • 也许尝试将行更改为 popoverPresentationController?.sourceView = self.viewpopoverPresentationController?.sourceRect = filters_button.frame
  • 我改了这两个,结果一样,popOver全屏显示...
  • 在 popoverPresentationController 行之后将 presentViewController 行移动到方法的末尾是否可行?
  • 不...我试过只是为了确定,但这并没有改变任何东西。

标签: ios swift swift2 ios9


【解决方案1】:

已修复: 鉴于要在 iPhone 设备上运行 PopOver,您需要在呈现 viewController 之前设置 popoverPresentationController 的委托,这样下面的方法就会被委托调用。所以添加

    popoverPresentationController?.delegate = self

下面

    popoverPresentationController?.sourceRect = filters_button.frame

然后移动

    self.presentViewController(filtersVC, animated: true, completion: nil)

到函数的末尾。

【讨论】:

  • 委托调用什么方法?
  • @SpaceDog adaptivePresentationStyle 只有在设置了代理后才生效。
【解决方案2】:

您应该添加以下内容

func adaptivePresentationStyle(for controller: UIPresentationController, traitCollection: UITraitCollection) -> UIModalPresentationStyle {
    return .none
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多