Nice writeup here on formalizing pattern names for approaches to avoiding that Massive View Controller problem it’s all too easy to slip into:
8 Patterns to Help You Destroy Massive View Controller
View controllers become gargantuan because they’re doing too many things. Keyboard management, user input, data transformation, view allocation — which of these is really the purview of the view controller? Which should be delegated to other objects? …
Data Source
The Data Source Pattern is a way of isolating the logic around which objects live behind what index paths. Particularly in complicated table views, it can be useful to remove all of the logic of “Which cells are visible under these conditions?” from your view controller…
Standard Composition
View controllers can be composed using the View Controller Containment APIs introduced in iOS 5. If your view controller is composed of several logical units that could each be their own view controller, consider using Composition to break them apart…
Smarter Views
If you’re allocating all of your view controller’s subviews inside of the view controller’s class, you may consider using a Smarter View. UIViewController defaults to using UIView for it’s view property, but you can override it with your own view…
Presenter
The Presenter Pattern wraps a model object, transforms its properties for display, and exposes messages for those transformed properties…
Binding pattern
In method form, this might be called -configureView. The Binding Pattern updates a view with model data as it changes…
Interaction pattern
Interactions often include an initial user input (like a button press), optional additional user input (“Are you sure you want to X?”), and then some activity, like a network request or state change. The entire lifecycle of that operation can be wrapped up inside the Interaction Object…
Keyboard Manager
Updating the view after the keyboard state changes is another concern that is classically stuck in the view controller, but this responsibility can easily be shifted in a Keyboard Manager. ..
Navigator
Navigating from screen to screen is normally done with a call to -pushViewController:animated:. As these transitions get more complicated, you can delegate this task to a Navigator object..
h/t: Michael Tsai!
And while you’re contemplating how to split things up into maintainability, also check out
Clean Up The Application Delegate With Initializers
UPDATES:
Massive View Controller collects followups to the above

Comments (1)