UICollectionView cellForItemAtIndexPath not registering cell

后端 未结 5 1562
甜味超标
甜味超标 2021-02-06 23:15

I am trying to use UICollectionViewCell, since all I want to display is an image. I can add the image to the cell using UIColor colorWithImage: on the

相关标签:
5条回答
  • 2021-02-06 23:58

    If you just want to display an image, you don't need to do any subclassing, you can set the cell's backgroundColor with colorWithPatternImage:. Register the class like this:

    [self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"Cell"];
    

    Then use it like so:

    - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
    {
        UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath];
        cell.backgroundColor = [UIColor colorWithPatternImage:[self.results objectAtIndex:indexPath.row]];
        return cell;
    }
    

    In this example, results is an array of UIImages.

    0 讨论(0)
  • 2021-02-07 00:02

    set your cell identifier name as in code

    enter image description here

    0 讨论(0)
  • 2021-02-07 00:03

    if your collection view is connected on storyboard and the delegate and datasource is set there, and you provide the necessary methods for the datasource and delegate, then adding the register call makes the

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

    return a UICollectionView instead of your own subclass of it. So do either but not both.

    0 讨论(0)
  • 2021-02-07 00:10

    Try setting a breakpoint on

    [self.collectionView registerClass:[ImageCell class] forCellWithReuseIdentifier:@"MyCell"];
    

    I would guess your loadView (did you mean viewDidLoad?) method is not being called, so the class is never registered with the collectionView.

    0 讨论(0)
  • 2021-02-07 00:13

    If you are using xib in applivation then add following in your viewdidLoad method

        [self.myCollectionView registerNib:[UINib nibWithNibName:@"CollectionViewCell" bundle:nil] forCellWithReuseIdentifier:@"CellIdentifier"];
    

    otherwise If you using storyboard add following

      [self.myCollectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"CellIdentifier"];
    

    Finally add this (If not)

    - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
    {
        UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"CellIdentifier" forIndexPath:indexPath];
     return cell;
    }
    

    Hope above will help.

    0 讨论(0)
提交回复
热议问题