如何使用按钮执行弹出窗口视图,然后显示tableView(以弹出格式)?

时间:2017-08-17 11:01:33

标签: swift swift3 tableview ios10 popover

我想在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
}

}

1 个答案:

答案 0 :(得分:0)

从View Controller创建一个弹出窗口 通过拖动加号图标在该弹出窗口上添加一个锚点 Popover From a UIView Controller and Button is Anchor

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)
}