Dans mon projet actuel, j'ai une vue détaillée qui montre un logging spécifique de ma vue de table. J'ai les labels suivantes
@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!
J'appelle un popover que je veux envoyer la valeur actuelle du text enregistré dans mon popup, permettre à l'user de le modifier et de le renvoyer à la vue. Voici mon appel de 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) }
J'aurais pensé que je pourrais referencer l'object de données du popover mais je ne peux pas … du less pas la façon dont je pense.
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: NSSsortingng) { 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 : NSSsortingng) } class SavingViewController: UIViewController { @IBOutlet var textField: UITextField! var delegate : SavingViewControllerDelegate? var strSaveText : NSSsortingng! 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) } } }