0

我正在使用 UIPopoverPresentationControllerDelegate 来显示我的弹出框,它工作正常,但无法管理弹出框 viewController 的宽度和高度。以及如何在当前上下文中设置演示文稿?

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

    let showObjectVC = storyboard?.instantiateViewController(withIdentifier: "ShowActorDetail") as! ShowActorDetailsViewController
    showObjectVC.modalPresentationStyle = .popover

    showObjectVC.popoverPresentationController?.sourceView = tableView.cellForRow(at: indexPath)
    showObjectVC.popoverPresentationController?.delegate = self
    showObjectVC.preferredContentSize = CGSize(width: 400, height: 300)

    present(showObjectVC, animated: true, completion: nil)
}
4

2 回答 2

0

而不是preferredContentSize尝试使用like的sourceRect属性,UIPopoverPresentationController

showObjectVC.popoverPresentationController?.sourceRect = tableView.cellForRow(at: indexPath)!.frame

确保根据需要指向单元格框架,以便弹出框显示在您想要的位置。

于 2018-07-06T06:37:10.850 回答
-1

您可以尝试另一种方法:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let showObjectVC = storyboard?.instantiateViewController(withIdentifier: "ShowActorDetail") as! ShowActorDetailsViewController
    // your logic
    presentViewControllerAsPopUp(showObjectVC)
}

private func presentViewControllerAsPopUp(_ vc: UIViewController) {
    vc.modalPresentationStyle = .overCurrentContext
    vc.modalTransitionStyle = .crossDissolve
    //self.definesPresentationContext = true
    self.present(vc, animated: true, completion: nil)
}

ShowActorDetailsViewController您可以制作UIView所需的尺寸和彩色背景。

于 2018-06-29T06:42:44.107 回答