下拉列表ios swift

时间:2017-06-22 01:06:23

标签: ios swift uitableview uipopovercontroller popover

我希望在点击时弹出一个小的UItableView,并在列表中显示一些数字。

我尝试使用popoverPresentationController,但它显示为iOS(iPhone)设备的全屏。

下面是相同的代码 -

let filterVC =  TableViewController(nibName: "TableViewController", bundle: nil)
              filterVC.preferredContentSize = CGSize(width: 300, height: 200)

    filterVC.modalPresentationStyle = UIModalPresentationStyle.popover

    present(filterVC, animated: true, completion: nil)
    let popoverPresentationController = filterVC.popoverPresentationController

    if let pop = filterVC.popoverPresentationController {
        pop.delegate = self
    }

       popoverPresentationController?.sourceView = sender as? UIView
    popoverPresentationController?.sourceRect = sender.frame

// -------

以下方法

  func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle {
    // Return no adaptive presentation style, use default presentation behaviour
    return .none
}

// ----- 任何正确方向的提示都将受到高度赞赏。 工作样本会非常有帮助

我想要实现的目标如下

dropdwon 1

dropdown 2

1 个答案:

答案 0 :(得分:1)

<强>更新

您可能想尝试一下有用的library

这是因为您在展示pop.delegate后已分配filterVC

移动此

if let pop = filterVC.popoverPresentationController {
    pop.delegate = self
    pop.sourceView = sender
    pop.sourceRect = sender.bounds
}
present(filterVC, animated: true, completion: nil)

filterVC的init应该可以解决问题。顺便说一句,我没有看到您为sourceView分配sourceRectpopoverPresentationController的任何地方。将pop.delegate = self移动到此部分应该是合适的。像

这样的东西
init(for sender: UIView)) {
    super.init(nibName: nil, bundle: nil)

    modalPresentationStyle = .popover
    guard let pop = popoverPresentationController else { return }
    pop.sourceView = sender
    pop.sourceRect = sender.bounds
    pop.delegate = self
}