Avoiding Massive View Controllers by refactoring.
James Rochabrun

Or you could use IGListKit to avoid registering cell logic, better dataSource logic separation with a section controller, diffing logic integrated and a collectionview.

IMO, it’s almost always better to use a collectionview rather than a tableview because what happens if your boss come and tell you to use a grid finally ? With a collectionview, you just need to add a “/2” on the width of the returned size and you’re good to go.

I would use tableview on only screen that have editing and multi-selection logic. Before doing a screen, I always try to think about the reason not to use collectionview and weight the pros and cons regarding what the screen is and what it could become.