In this situation, I will personally return to the model-view-controller template.
There are several system applications that display a detailed view from a list of objects, for example. Calendar, Contacts, etc. Presumably, as in EKEvent and ABPerson in the respective applications, the main view controller maintains a list of model objects. When the user selects one of the elements, the main view controller passes the selected model object to the detail view controller. The detailed view controller itself is not required to download data. So, as @ChrisWagner said, we want to separate the logic from the view controller.
Method
Similarly, you can use the MovieList class, which stores an array of Movie objects. Each Movie stores the values for all fields in the detail view controller — essentially all the information the application needs for the movie. For example, you might have the NSString *movieTitle or NSDate *premiereDate property. movieTitle would be set by MovieList on initialization, because it is only metadata; on the other hand, premiereDate may be nil if the data is not loaded, so you have the BOOL isLoaded property to check this condition.
Then you can do one of two ways:
1) Say that the main view controller wants to click the detail view controller for the movie. The main view controller then subtracts the Movie from the MovieList and checks to see if it is loaded. If not, then on Movie. something like -(void)loadContents will be called. When the model object is finished, it will send a notification that the download is complete. At this point, the main view controller will reject its progress view and click the detail view. If you use (1), it is not so important to use the MovieList coordinator.
2) If you want to load movie information more aggressively, you can implement a method on a MovieList that calls loadContents on a Movie in the background. Then there is a higher probability that the film will already be downloaded when the user selects it.
Change Please note: if you decide to use an object of type MovieList , access to this list should be allowed only to the main controller. In some ways, the structure of the model that I described is parallel to the structure of the view controller. The detail view controller does not know about the list view controller, so it should not know about MovieList .
Benefit
The advantage of using this Movie and MovieList is that the data model is completely separate from the view controllers. In this way, the user can cancel, select, submit and reject view controllers during data loading. (Imagine if the user clicked Back to cancel the HUD progress by canceling any HTTP data that he would have collected. Then, if he decides to return to the same movie, the new details view controller should start downloading again.) Also, if you decided to replace the classes of the class controller during the development process, you do not have to copy and paste a bunch of data processing code.
I think you will find that structuring your application in this way not only gives you and the user more freedom, but also makes your application effective and open for future extensions. (Sorry it's so late, but I wanted to include MVC in this template-related discussion!)