下拉列表ios迅速

我想要一个小的UItableView,当点击时popup,并在列表中显示一些数字。

我试图使用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

下拉2

UPDATE

有一个有用的图书馆,你可能想尝试。


这是因为你的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应该做的伎俩。 顺便说一句,我没有看到任何地方你已经分配给你的popoverPresentationController sourceViewpopoverPresentationController 。 把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 }