iosswiftstoryboarduipopovercontrolleruipopover

PopoverPresentationController coming as nil


Created a SingleViewApplication in that I have placed a button.

Now clicking on button I need to display a tableView as popover. The TableViewController is created in xib.

The issue is tableViewController.popoverPresentationController always comes as nil see below code

     let filterVC =  TableViewController(nibName: "TableViewController", bundle: nil)
    var filterDistanceViewController = UINavigationController(rootViewController: filterVC)
    filterDistanceViewController.preferredContentSize = CGSize(width: 300, height: 200)
    let popoverPresentationViewController = filterDistanceViewController.popoverPresentationController
    popoverPresentationViewController?.permittedArrowDirections = .any


    if let pop = filterDistanceViewController.popoverPresentationController {
        pop.delegate = self
    }

in above code filterDistanceViewController.popoverPresentationController is always coming as nil

Any hint in right direction will be highly appreciated.


Solution

  • You are not presenting anything, so you need to present the popoverPresentationViewController on the current viewcontroller, for example:

    @IBAction func importantButtonPressed(_ sender: UIButton) {
             let tableViewController = UITableViewController()
             tableViewController.modalPresentationStyle = .popover
    
             present(tableViewController, animated: true, completion: nil)
    
            if let pop = tableViewController.popoverPresentationController {
              pop.delegate = self
            }
    
        }