【问题标题】:Present a ViewController as a popover将 ViewController 呈现为弹出框
【发布时间】:2017-01-03 14:46:57
【问题描述】:

我有一个主 ViewController,其中有一个带有自定义 tableViewCell 的 tableView,在其中我添加了一些视图对象和一个按钮。当我单击单元格中的按钮时,我想呈现另一个 ViewController,并且我需要从弹出的 ViewController 发送(发生单击事件的 tableCell 数据)和接收(从 pickerView 和其他标签的文本中选择的值)然后最后我需要一种方法(比如关闭按钮)来关闭它。

我可以使用以下代码发送单元格中发生点击事件的单元格的数据

@IBAction func cellBtnClicked(_ sender: Any) {
    let foodItem:FoodItem?
    let indexPath : IndexPath
    if let button = sender as? UIButton {
        let cell = button.superview?.superview as! UITableViewCell
        indexPath = self.tableView.indexPath(for: cell)!
        let hotel =  hotels[indexPath.section]
        foodItem = hotel.menu[indexPath.row]

然后我将该单元格数据加载到弹出框控制器中并尝试将其呈现为弹出框

let popoverContent = self.storyboard?.instantiateViewController(withIdentifier:"ShowPopoverVC" ) as! MiniCartVC
        popoverContent.foodItem = foodItem
        popoverContent.modalPresentationStyle = UIModalPresentationStyle.popover

                if let popover = popoverContent.popoverPresentationController {

                    let viewForSource = sender as! UIView
                    popover.sourceView = viewForSource

                    // the position of the popover where it's showed
                    popover.sourceRect = viewForSource.bounds

                    // the size you want to display
                    popoverContent.preferredContentSize = CGSize(width: 200, height: 135)
                    popover.delegate = self
                }            

                self.present(popoverContent, animated: true, completion: nil)
    }

但它不是作为弹出框出现,而是像 segue 一样展开整个视图。此外,我需要一种方法在关闭弹出框 VC 时将数据发送到 MainVC。

如果有任何方法可以正确实施,请告诉我。任何资源作为参考也可以,谢谢。

【问题讨论】:

标签: ios swift uipopovercontroller popover presentviewcontroller


【解决方案1】:

根据您列出的代码:

popover.delegate = self

您已将 UIPopoverPresentationControllerDelegate 设置为 self。 只需实现可选方法并使用此实现

func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle {
        return .none
}

【讨论】:

  • 我确实包含了该可选功能。
  • 其实你的想法对我有用。我已将以下代码 'func AdaptivePresentationStyleForPresentationController(controller: UIPresentationController) -> UIModalPresentationStyle { return .none }' 更改为 ----> ' func AdaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle { return UIModalPresentationStyle.none }',谢谢.
  • 如果有帮助,请投票。这对其他用户也将是有益的。谢谢。
猜你喜欢
  • 2019-02-26
  • 2019-12-08
  • 2012-02-05
  • 1970-01-01
  • 2020-03-25
  • 1970-01-01
  • 1970-01-01
  • 2013-06-06
  • 1970-01-01
相关资源
最近更新 更多