我想在UIViewController上创建一个按钮,并在按下时以弹出格式显示UITableView。当我尝试时,我必须以popover格式查看tableview,但我可以在其上显示我的内容。谁知道如何使用tableView正确执行popover?或者有没有人有这种情况的例子? (按钮不是UIBarButton,它是普通的UIButton)。我试过这个:
import UIKit
class StadisticViewController:UIViewController,UIPopoverPresentationControllerDelegate {
var team: [Players] = []
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func showPopoverTapped(_ sender: UIButton) {
self.performSegue(withIdentifier: "popSegue", sender: self)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "popSegue" {
let controller = segue.destination as! PopViewController
controller.popTeam = self.team
controller.popoverPresentationController!.delegate = self
controller.preferredContentSize = CGSize(width: self.view.frame.width, height: self.view.frame.height - 65.0)
}
}
func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle {
return .none
}
}
答案 0 :(得分:0)
从View Controller创建一个弹出窗口
通过拖动加号图标在该弹出窗口上添加一个锚点
class ViewController : UIViewController , UIPopoverPresentationControllerDelegate {
@IBAction func showPopoverTapped(_ sender : UIButton) {
self.performSegue("identifier" , sender : self)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "identifier" {
if let controller = segue.destination as? YourViewControllerClass {
controller.popoverPresentationController!.delegate = self
controller.delegate = self
controller.preferredContentSize = CGSize(width: self.view.frame.width, height: self.view.frame.height - 65.0)
}
}
}
func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle {
return .none
}
如果您想以编程方式执行
else if senderTag == 2 {
let sliderViewController = storyboard?.instantiateViewController(withIdentifier: "BGPopover") as! AllDesignsViewController
sliderViewController.modalPresentationStyle = .popover
sliderViewController.preferredContentSize = CGSize(width: self.view.frame.width, height: 220)
let popoverMenuViewController = sliderViewController.popoverPresentationController
popoverMenuViewController?.permittedArrowDirections = .up
popoverMenuViewController?.delegate = self
// You Still Need Anchor point for popover i used bar button as popover anchor. you can use any other UI Element
// popoverMenuViewController?.sourceView = yourAnchorView
// popoverMenuViewController?.sourceRect = yourAnchorView.bounds
popoverMenuViewController?.barButtonItem = sideBarButton
present(sliderViewController, animated: true, completion: nil)
}