下拉列表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 }
// —–任何提示正确的方向将不胜感激。 工作样本将是非常有帮助的
我正在试图达到如下
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
sourceView
和popoverPresentationController
。 把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 }