我希望在点击时弹出一个小的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
}
// ----- 任何正确方向的提示都将受到高度赞赏。 工作样本会非常有帮助
我想要实现的目标如下
答案 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
分配sourceRect
和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
}