【发布时间】: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。
如果有任何方法可以正确实施,请告诉我。任何资源作为参考也可以,谢谢。
【问题讨论】:
-
这是一个弹窗教程 --> youtube.com/watch?v=48UA06EwfrM.您还需要使用委托模式将数据从弹出窗口发送到父视图控制器。 useyourloaf.com/blog/quick-guide-to-swift-delegates
标签: ios swift uipopovercontroller popover presentviewcontroller