如何将数据从PopoverViewController传回iPhone上的主视图控制器?将数据从iPhone上的弹出窗口视图控制器传回给iPhone
我知道我在做一些非常错误的事情,但我无法弄清楚。
下面是代码: PopoverViewController.swift
protocol PopoverViewControllerDelegate {
func messageData(data: AnyObject)
}
class PopoverViewController: UIViewController {
@IBOutlet weak var inputMessage: UITextField!
var delegate: PopoverViewControllerDelegate?
@IBAction func sendData(sender: AnyObject) {
if inputMessage.text != ""{
self.presentingViewController!.dismissViewControllerAnimated(true, completion: nil)
self.delegate?.messageData(inputMessage.text!)
}
}
}
主要ViewController.swift:
class ViewController: UIViewController, UIPopoverPresentationControllerDelegate, PopoverViewControllerDelegate {
@IBOutlet weak var showData: UILabel!
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
// popover segue
if segue.identifier == "popoverSegue" {
let popoverViewController = segue.destinationViewController
popoverViewController.popoverPresentationController!.delegate = self
}
// code to comunicate with data in popoverViewController
let pvc = storyboard?.instantiateViewControllerWithIdentifier("popoverViewController") as! PopoverViewController
pvc.delegate = self
self.presentViewController(pvc, animated:false, completion:nil)
}
func adaptivePresentationStyleForPresentationController(controller: UIPresentationController) -> UIModalPresentationStyle {
return UIModalPresentationStyle.None
}
func messageData(data: AnyObject) {
self.showData.text = "\(data)"
}
}
利用上述我可以传递数据回主视图控制器不会有问题的代码,问题是popover不起作用,它就像一个占用整个屏幕的常规ViewController
。
有趣的是,如果我评论下面的代码行popover工作,但我不能再传回数据,我可以看到popover,但传递的数据停止工作。
// if I comment this line
self.presentViewController(pvc, animated:false, completion:nil)
我没有得到任何错误,只是一个停止工作。
有什么建议吗?
非常感谢
@ vacawama - 该酥料饼不工作时,将数据传递工作,但是酥料饼的viewController填满整个屏幕。谢谢 –
当您在故事板中连接Segue时,是否选择了'presentAsPopover'? – vacawama
是的,我做到了。谢谢 –