For years, iOS developers used the UITableView component to create a huge variety of interfaces. With its ability to let you define multiple cell types, create them on the fly as needed, and handily scroll them vertically, UITableView became a key component of thousands of apps. While Apple has increased the capability of table views with every major new iOS release, it’s still not the ultimate solution for all large sets of data. If you want to present data in multiple columns, for example, you need to combine all the columns for each row of data into a single cell. There’s also no way to make a UITableView scroll its content horizontally. In general, much of the power of UITableView came with a particular trade-off: developers have no control of the overall layout of a table view. You define the look of each individual cell, but the cells are just going to be stacked on top of each other in one big scrolling list.