我有一个主ViewController,其中我有一个带有自定义tableViewCell的tableView,在其中我添加了一些视图对象和一个按钮。当我点击单元格中的按钮时,我想要呈现另一个ViewController,我还需要从弹出的ViewController发送(tableCell数据发生click事件)和Receive(selecterView和其他标签文本中的选定值),最后我需要一种方法(如关闭按钮)来关闭它。
我可以使用以下代码
发送单元格中发生单击事件的数据@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)
}
但是它并不是像popue那样,而是像segue一样扩展整个View.Also我需要一种方法在解雇它时将数据从popover VC发送到MainVC。
如果有任何方法可以正确实施,请告诉我。任何资源作为参考目的也很好,谢谢。
答案 0 :(得分:1)
从您列出的代码:
popover.delegate = self
您已将UIPopoverPresentationControllerDelegate设置为self。 只需实现可选方法并使用此实现
func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle {
return .none
}