How to exchange data between View Controllers

- by

If you have two view controller classes you probably want to exchange data between them. Thanks to two methods we can do that, provided one view controller is presented via a modal segue. Here’s how it works step by step.

Imagine you had two labels on each View Controller. We’ll call them myLabel1 and myLabel2 (1is on ViewController, 2 on MyViewController). Both View Controllers need to be connected as described previously via a segue. You can access properties on ViewController from MyViewController like so:

self.myLabel1.text = ((MyViewController *)self.presentedViewController).myLabel2.text;

Likewise, if you’re in MyViewController you can access properties from ViewController like so:

self.myLabel2.text = ((ViewController *)self.presentingViewController).myLabel1.text;

If you enjoy my content, please consider supporting me on Ko-fi. In return you can browse this whole site witout any pesky ads! More details here.

2 thoughts on “How to exchange data between View Controllers”

  1. Hi, access via presentedViewController doesn’t work. Only access from second View Controller via presentingViewController works. If you go back with dismissViewControllerAnimated all the properties are “null”.
    The only moment presentedViewController works well is by performSegueWithIdentifier. That’s all!

    “self.myLabel1.text = ((MyViewController *)self.presentedViewController).myLabel2.text;” doesn’t work. You’ll dismiss the viewController!

    Best regards

Add your voice!

This site uses Akismet to reduce spam. Learn how your comment data is processed.