iOS SDK uses view reusing principle a lot. Reusing means that one view instance can be used multiple times for showing different data. For example, if you have 10000 items in your data source, but UITableView can display only 10 items, there will be only 10 cells in the memory. Passing all the data in the constructor is orthogonal to view reuse mechanism. You need a way to set new user name, date, notification text to cell from outside after it was initialized.