【Swift5】ボタンからPopoverを出す。
ボタン等をタップした時に、そこからフキダシのようにUIViewControllerを表示させる、Popoverの簡素なコードです。
class CanvasViewController: UIViewController,UIPopoverPresentationControllerDelegate{
func adaptivePresentationStyle(for controller: UIPresentationController, traitCollection: UITraitCollection) -> UIModalPresentationStyle {
return .none
}
func presentPopver(viewController: UIViewController!, sourceView: UIView!) {
viewController.modalPresentationStyle = UIModalPresentationStyle.popover
let size = self.view.frame.size
viewController.preferredContentSize = size
let popoverController = viewController.popoverPresentationController
popoverController?.delegate = self
// 出す向き(DownはsourceViewの上)
popoverController?.permittedArrowDirections = UIPopoverArrowDirection.down
// どこから出た感じにするか
popoverController?.sourceView = sourceView
popoverController?.sourceRect = sourceView.bounds
self.present(viewController, animated: true, completion: nil)
}
@IBAction func buttonTap(_ sender: UIButton) {
let targetView = MyViewController()
self.presentPopver(viewController: targetView, sourceView: sender)
}
}