Your view code shouldn't go into your view controllers, it should go into your views. This is a mistake that is very common among iOS engineers. Anything dealing with subviews, layouts, touches, etc should go into subclasses of UIView; view controllers should handle touches (delegation!), interact with the navigation controller, and act as a bridge between your views and the rest of your application code.