UICollectionView registerCell - Blank Cells

Remove

[self.collectionview registerClass:[NewCell class] forCellWithReuseIdentifier:@"Cell"];

For storyboards we don't need this line


You storyboard is automatically registering the cell you designed in the storyboard for the reuse identifier you specified for that cell in the right hand pane in interface builder. By re-registering your class for that reuse identifier the collection view simply calls alloc init on your subclass and expects the view to be setup programmatically.

From the documentation:

If you previously registered a class or nib file with the same reuse identifier, the class you specify in the cellClass parameter replaces the old entry. You may specify nil for cellClass if you want to unregister the class from the specified reuse identifier.

If you want to design cells outside of the storyboard you can either setup your interface programmatically or set up a cell in a seperate xib and then call

- (void)registerNib:(UINib *)nib forCellWithReuseIdentifier:(NSString *)identifier

Where the nib must have one top level view which is a cell of your custom subclass with the right reuse identifier set in interface builder.