Q:

PSCollectionView's delegate not fire

I followed PSCollectionView's usage on Github. 
This is my code:
- (void)viewDidLoad
{
  self.collectionView = [[PSCollectionView alloc] init];
  self.collectionView.collectionViewDataSource = self;
  self.collectionView.collectionViewDelegate = self;
  self.collectionView.numColsPortrait = 2;

  [self.view addSubview:self.collectionView];
  [self.collectionView reloadData]; // If i don't call this my console will be empty. 
}
- (NSInteger)numberOfRowsInCollectionView:(PSCollectionView *)collectionView 
{
  NSLog(@"num rows");
  return 2;
}
- (PSCollectionViewCell *)collectionView:(PSCollectionView *)collectionView cellForRowAtIndex:(NSInteger)index
{
  NSLog(@"cell for row");
  return nil;
}
- (CGFloat)collectionView:(PSCollectionView *)collectionView heightForRowAtIndex:(NSInteger)index
{
  NSLog(@"height for row");
  return 0.0;
}

My console was empty.  But when I called [collectionView reloadData], here is the result:
num rows
height for row
height for row
num rows

I have no idea why "cell for row" is not printed out. 
Any hint or suggestion?  Thank you. 

A:

Finally I can make it works! 
You must set the PSCollectionView instance's frame.