在Swift中传入和传出Popover的数据

在我目前的项目中,我有详细的视图,显示从我的表视图的特定logging。 我有以下标签

@IBOutlet weak var vacationImageView: UIImageView! @IBOutlet weak var percentSaved: UILabel! @IBOutlet weak var cost: UILabel! @IBOutlet weak var saved: UILabel! @IBOutlet weak var circleProgressView: CircularProgressView! @IBOutlet weak var daysDepart: UILabel! 

我将popup窗口称为popup窗口,将当前保存的文本值发送到popup窗口,允许用户对其进行编辑并将其发回到视图。 这是我的popover电话。

 @IBAction func addPopover(sender: UIView) { let savingsInformationViewController = storyboard?.instantiateViewControllerWithIdentifier("SavingsAddPopover") as UIViewController savingsInformationViewController.modalPresentationStyle = .Popover savingsInformationViewController.preferredContentSize = CGSizeMake(200, 200) let popoverController = savingsInformationViewController.popoverPresentationController popoverController?.sourceView = sender popoverController?.permittedArrowDirections = .Any popoverController?.delegate = self presentViewController(savingsInformationViewController, animated: true, completion: nil) } 

我原以为我可以从popover中引用数据对象,但不能..至less不是我想的方式。

 class ViewController: UIViewController,SavingViewControllerDelegate,UIPopoverPresentationControllerDelegate{ @IBOutlet var labelText: UILabel! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. } @IBAction func buttonPopOverClick(sender: UIButton) { let savingsInformationViewController = storyboard?.instantiateViewControllerWithIdentifier("SavingsAddPopoverVC") as SavingViewController savingsInformationViewController.delegate = self savingsInformationViewController.strSaveText=labelText.text savingsInformationViewController.modalPresentationStyle = .Popover if let popoverController = savingsInformationViewController.popoverPresentationController { popoverController.sourceView = sender popoverController.sourceRect = sender.bounds popoverController.permittedArrowDirections = .Any popoverController.delegate = self } presentViewController(savingsInformationViewController, animated: true, completion: nil) } func saveText(strText: NSString) { labelText.text=strText } // MARK: - UIPopoverPresentationControllerDelegate func adaptivePresentationStyleForPresentationController(controller: UIPresentationController!) -> UIModalPresentationStyle { return .FullScreen } func presentationController(controller: UIPresentationController!, viewControllerForAdaptivePresentationStyle style: UIModalPresentationStyle) -> UIViewController! { return UINavigationController(rootViewController: controller.presentedViewController) } } protocol SavingViewControllerDelegate { func saveText(var strText : NSString) } class SavingViewController: UIViewController { @IBOutlet var textField: UITextField! var delegate : SavingViewControllerDelegate? var strSaveText : NSString! override func viewDidLoad() { super.viewDidLoad() textField.text = strSaveText // Do any additional setup after loading the view. } @IBAction func buttonDone(sender: UIButton) { if (self.delegate) != nil { delegate?.saveText(textField.text) self.dismissViewControllerAnimated(true, nil) } } }