I'm sure every new iOS developer has the following problem: The View Controllers get very fast crowded with code for various purposes, easily getting to 500 + lines of code.
This is how it looks like for two basic and common screens:
The Form Screen:

The Table View Controller Screen

So far I have read about two different solutions:
First Solution: https://bendyworks.com/single-responsibility-principle-ios/. This is based on Notifications, it completely separates the View Controller from the (Intentions) View Model and thus reduces code in the View Controller. I think that it has the downside of breaking code, similar to Go-To structures. It looks like this:

The second solution keeps the same crowded View Controllers (button actions are executed inside VC and so on). but uses libraries like TPKeyboardAvoiding, BlocksKit or other solutions most of them based on categories. With this second solution, code is drastically reducesreduced but the view controller still has a lot of responsibility.
What do you think about these solutions? Which is better? Is there a better one?