When working with UIKit, view controllers are the opposite of isolated: they are connected to everything. The view controller often pulls network or database data, populates and interacts with views, and finally, it pushes other view controllers onto the navigation stack (or presents them in a different way). In this article, we'll look at view controllers that do only one thing: they populate the views and interact with them. They don't load any data themselves, nor do they present other view controllers.
Great approach to reducing View Controllers complexity using functional paradigms.
Also, check out objc.io #1 'Lighter View Controllers' if you haven't already.