【问题标题】:Cant dismiss Popover UITableViewController无法关闭 Popover UITableViewController
【发布时间】:2017-05-23 16:36:29
【问题描述】:

我有一个 UITableViewController 显示为如下弹出框

    popoverViewController = self.storyboard?.instantiateViewController(withIdentifier: "ItemsTableView") as? ItemsTableViewController
    popoverViewController?.itemeSelectionDelegate = self
    popoverViewController?.modalPresentationStyle = .popover

    let popoverPresentationViewController = popoverViewController?.popoverPresentationController
    let itemCell  = cell as! ItemContentCell
    popoverPresentationViewController?.permittedArrowDirections = UIPopoverArrowDirection.any
    popoverPresentationViewController?.sourceView = cell
    popoverPresentationViewController?.sourceRect = itemCell.itemName.bounds

    present(popoverViewController!, animated: true, completion: nil)

popoverViewController 是一个成员 var,当从 popoverViewController 中选择一个项目时,我使用它来关闭它,我正在调用一个自定义委托方法,我正在使用“Dismiss”方法将其关闭,但有时它有时会起作用,但有时它不会.

 func itemSelected(item: Item) {
    print("selected item")
    popoverViewController?.dismiss(animated: false, completion: nil)
}

还有其他方法可以消除弹出框吗?

【问题讨论】:

  • 你是否在itemSelected: 中设置了一个断点来查看它是否真的被调用了?如果是这样,如果当时popoverViewController 不为零?
  • 是的,它确实被调用并且 popoverViewController 不是 nil

标签: ios swift uipopovercontroller


【解决方案1】:

你必须实现UIPopoverPresentationControllerDelegate方法public func popoverPresentationControllerShouldDismissPopover(_ popoverPresentationController: UIPopoverPresentationController) -> Bool。 这是演示实现。

    extension YouViewController: UIPopoverPresentationControllerDelegate {

        func popoverPresentationControllerShouldDismissPopover(_ popoverPresentationController: UIPopoverPresentationController) -> Bool {
            return true
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-11
    • 2017-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多