How can I add an extra cell to the UICollectionView?

I want to add an extra load to the UICollectionview cell? can someone tell me how can i add a download button? I have created a collection that works great, but I want to add a Load More button at the bottom of the collection, like this

Here's my collection view

#pragma mark <UICollectionViewDataSource>

- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView {
      return 3;
}

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
     switch (section) {
            case 0: return 66;
            case 1: return 123;
     }
     return 31;
 }

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {

   NSUInteger row = [indexPath row];
   NSUInteger count = [self.stockImages count];

   if (row == count) {

        //Add load more cell
   }

  DemoCellView *cell = [collectionView dequeueReusableCellWithReuseIdentifier:[DemoCellView reuseIdentifier] forIndexPath:indexPath];

  // Configure the cell
  cell.titleLabel.text = [NSString stringWithFormat:@"%ld", (long)indexPath.item + 1];
  NSLog(@"%@", self.stockImages[indexPath.item % self.stockImages.count]);
  cell.imageView.image = self.stockImages[indexPath.item % self.stockImages.count];

  return cell;
}


#pragma mark <DemoLayoutDelegate>

- (void) collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {

     // Do something 
     // Insert new cell after clicking load more data 

}

 - (CGFloat)collectionView:(UICollectionView *)collectionView layout: (UICollectionViewLayout *)collectionViewLayout heightForHeaderInSection:(NSInteger)section {
     return kFMHeaderFooterHeight;
}

  - (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout heightForFooterInSection:(NSInteger)section {
    return kFMHeaderFooterHeight;
 }

      

enter image description here

+3


source to share


2 answers


You can add a footer



- (UICollectionReusableView *)collectionView:(JSQMessagesCollectionView *)collectionView
           viewForSupplementaryElementOfKind:(NSString *)kind
                                 atIndexPath:(NSIndexPath *)indexPath
{
    if ([kind isEqualToString:UICollectionElementKindSectionFooter]) {

        //load your footer you have registered earlier for load more 
        [super dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionFooter
                                                                             withReuseIdentifier:@"load more footer"
                                                                                    forIndexPath:indexPath];
    }

    return nil;
}

      

+8


source


In your method, cellForItemAtIndexPath

you can check this:

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
    ImageCollectionViewCell *cellImage;
    AddMoreCollectionViewCell *addMoreCell;
    if(indexPath.row < [_dataSource numberOfItems]){
        cellImage = [collectionView dequeueReusableCellWithReuseIdentifier:ImageCollectionCellIdentifier
                                                              forIndexPath:indexPath];
        [cellImage configureForMediaViewModel:[_dataSource mediaViewModelForItemIndex:indexPath.row] delegate:self];
        return cellImage;
    }else{
        addMoreCell = [collectionView dequeueReusableCellWithReuseIdentifier:AddMoreCollectionCellIdentifier
                                                                forIndexPath:indexPath];
        addMoreCell.delegate = self;
        return addMoreCell;

    }
}

      

where ImageCollectionViewCell

is the main type of cells, and AddMoreCollectionViewCell

is a cell with a plus symbol (+) and other things.



This method is AddMoreCollectionViewCell

always appended to the end of your collection view.

Hope it helps!

0


source







All Articles