title: How should I be transferring data through multiple view controllers?
body: <p>Passing data between view controllers in iOS development seems overly complicated.  Here is what I've come to realize:  Passing data forward (pushing a view) or directly segueing to a view can be easily done with the -(void)prepareForSegue method.  Data can easily shuffle back and forth between view controllers using the presentingViewCotnroller and presendedViewController properties.  Here is an example of data going from the second view controller back to the first view controller.  Here is an example code of what I'm talking about:</p>
  
  <pre><code>    ((FirstViewController *)self.presentingViewController).firstViewControllerProperty = self.secondViewControllerProperty;
  </code></pre>
  
  <p>However I'm stuck when trying to pass data through multiple view controllers.  Everyone seems to say use delegation and think in terms of MVC.  When I attempt to do this I get stuck.  Here is why:  If viewControllerA tells the model to hold some data and then viewControllerD needs the data I end up having viewControllerD reference an instance of the model.  (I do this b/c I don't how else to access the model from a view controller) I'm assuming when I create an instance of the model, that mean I have a fresh model without the data I was trying to access.  </p>
  
  <p>Then I realize that maybe I should be setting up my model as a singleton.  I'm assuming singletons are when you set up one class that is referenced by the all other view controllers without them having to create instances of the model class.  The more I read about singletons the more I feel like I'm getting off track.  I try putting all these things together and it gets overly complicated.  </p>
  
  <p>Am I missing something here?  Should I be able to reference my model from various view controllers without creating new instances of it?  I'm relatively new to iOS programming, and I'm looking for somebody to point me in the right direction.  Should I be putting my energy into learning about delegation?  or into learning about singletons?  or into learning about target actions? Is there an easy tutorial / book recommendation to learn about transferring data among view controllers?</p>