title: UICollectionView: header view programmatically
body: <p>This is the way i am working on header.</p>
  
  <pre><code>  //    viewDidLoad
  
    [self.collectionView registerClass:[UICollectionViewCell class]forCellWithReuseIdentifier:@"Cell"];
  
  [self.collectionView registerClass:[UICollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"header"];
  
  UICollectionViewFlowLayout *layout= [[UICollectionViewFlowLayout alloc]init];
  
  self.collectionView = [[UICollectionView alloc]initWithFrame:CGRectMake(0, 0, 390, 300) collectionViewLayout:layout];
  layout.collectionView.backgroundColor = [UIColor colorWithRed:230.0/255.0 green:230.0/255.0 blue:230.0/255.0 alpha:1.0];
  [self.collectionView registerClass:[UICollectionViewCell class]
          forCellWithReuseIdentifier:@"Cell"];
  self.collectionView.delegate=self;
  self.collectionView.dataSource=self;
  layout.minimumInteritemSpacing = 15;
  
  [layout setScrollDirection:UICollectionViewScrollDirectionVertical];
  
  self.collectionView.collectionViewLayout = layout;
  self.collectionView.showsHorizontalScrollIndicator = NO;
  self.collectionView.showsVerticalScrollIndicator = NO;
  [self.collectionView setBounces:YES];
  self.collectionView.allowsMultipleSelection = YES;
  [self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"HorizontalPickerCell"];
  [self.view addSubview:self.collectionView];
  
     - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section
    {
    if (section == 0) {
      return CGSizeMake(0, kHeaderHeight);
    }
    return CGSizeMake(0, kHeaderHeight + kInterSectionMargin);
    }
  
    - (NSInteger)numberOfSectionsInCollectionView: (UICollectionView *)collectionView
    {
  NSLog(@"levels count:%d", [arrLevels count]);
  return [arrLevels count];
    }
  
    - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
   {
   NSLog(@"vals count:%d", [arrSeats count]);
   for(int i=0; i&lt;[arrLevels count]; i++)
   {
      if(section == i)
      {
          int c;
          NSString *cnt = [NSString stringWithFormat:@"%@",[arrTot objectAtIndex:i]];
          c = [cnt intValue];
          return c;
      }
   }
   return 1;
   }
  
   - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
  {
  UICollectionViewCell *cell = [self.collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath];
  
  //cell.selectedBackgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"blue_s.png"]];
  
  if (cell.selected) {
      [UIColor colorWithPatternImage:[UIImage imageNamed:@"blue_s.png"]]; // highlight selection
   }
  else
   {
      cell.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"yellow_seat.png"]]; // Default color
   }
  
  return cell;
   }
  
   - (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section {
  return UIEdgeInsetsMake(10, 12, 10, 10);
   }
  
   - (CGSize)collectionView:(UICollectionView *)collectionView layout:  (UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
  {
  CGSize retval =  CGSizeMake(22, 20);
  return retval;
  }
  
  - (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath
  {
  UICollectionReusableView *reusableview = nil;
  
  if (kind == UICollectionElementKindSectionHeader) {
      UICollectionReusableView *headerView = [self.collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:nil forIndexPath:indexPath];
  
          self.lblHeader = [[UILabel alloc]initWithFrame:CGRectMake(120, 10, 100, 30)];
          self.lblHeader.backgroundColor = [UIColor whiteColor];
          self.lblHeader.textColor = [UIColor redColor];
          self.lblHeader.text = @"Level 1";
          [self.collectionView addSubview:self.lblHeader];
  }
  return reusableview;
  }
  
  - (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
  {
  printf("Selected View index=%d",indexPath.row);
  
  itemPaths  = [self.collectionView indexPathsForSelectedItems];
  
  UICollectionViewCell* cell=[self.collectionView cellForItemAtIndexPath:indexPath];
  cell.contentView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"blue_s.png"]];
   }
  
   - (void)collectionView:(UICollectionView *)collectionView didDeselectItemAtIndexPath:(NSIndexPath *)indexPath
   {
  UICollectionViewCell* cell=[self.collectionView cellForItemAtIndexPath:indexPath];
  cell.contentView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"yellow_seat.png"]];
   }
  </code></pre>