PopoverPresentationController以零结尾

Ekr*_*kra 2 storyboard uipopovercontroller ios uipopover swift

创建了一个SingleViewApplication,我已经放置了一个按钮.

现在点击按钮我需要将tableView显示为popover.TableViewController是在xib中创建的.

问题是tableViewController.popoverPresentationController总是如下所示,参见下面的代码

     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
    }
Run Code Online (Sandbox Code Playgroud)

在上面的代码filterDistanceViewController.popoverPresentationController总是为零

任何正确方向的提示都将受到高度赞赏.

Dan*_*ark 9

在您设置modalPresentationStyleVC之前,该popoverPresentationController属性将是nil.确保modalPresentationStyle在访问之前设置.


Dar*_*usV 5

您没有呈现任何内容,因此您需要在当前视图控制器上呈现popoverPresentationViewController,例如:

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

    }
Run Code Online (Sandbox Code Playgroud)