3
votes

I'm using storyboard to develop an application that has a UICollectionView inside an UIScrollView. I've set the delegate and dataSource in storyboard and code.

I'm putting fake information to verify the layout of the app but UICollectionView and UICollectionViewCell not appear in any way.

.M

@implementation PerfilUsuarioViewController
- (void)viewDidLoad {
    [super viewDidLoad];

    self.navigationItem.title =  @"Perfil";
    self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"[email protected]"]];
    FotosHelper* fotoCasal = [[FotosHelper alloc]init];

    //Tamanho da view que sera exibida
    self.scrollView.contentSize = CGSizeMake(310, 1160);
    //Tamanho da tela do aparelho
    self.scrollView.frame = CGRectMake(0, 0, 320, 568);

    [self preparaZPositionCamposDetalhesCasal];
    [self dadosPessoaUm];

    self.fotosCollectionView.delegate = self;
    self.fotosCollectionView.dataSource = self;

    self.labelNmCasal.text = [NSString stringWithFormat:@"%@ (%ld)", self.usuario.usuarioNome, self.usuario.usuarioCodigo];
    self.fotoCasal.image = [fotoCasal decodeBase64ToImage:self.usuario.usuarioFotoPerfil];
    self.fieldProposta.text = self.usuario.usuarioDescricao;
}

//inner methods

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

-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
    return 10;
}

-(UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath {

    UICollectionReusableView *reusableview = nil;

    if (kind == UICollectionElementKindSectionHeader) {
        TituloCollectionViewCell *headerView = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"headerView" forIndexPath:indexPath];
        NSString *title = [[NSString alloc]initWithFormat:@"Recipe Group #%i", indexPath.section + 1];
        headerView.labelTitulo.text = title;

        reusableview = headerView;
    }
    return reusableview;
}


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

    cell.fotoCollectionViewCell.image = [UIImage imageNamed:@"feminino.png"];

    if (cell.selected) {
        cell.backgroundColor = [UIColor blueColor]; // highlight selection
    }
    else
    {
        cell.backgroundColor = [UIColor redColor]; // Default color
    }
    return cell;
}

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

    FotosCollectionViewCell *datasetCell = (FotosCollectionViewCell*)[collectionView cellForItemAtIndexPath:indexPath];
    datasetCell.backgroundColor = [UIColor blueColor]; // highlight selection
}

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

    FotosCollectionViewCell *datasetCell = (FotosCollectionViewCell*)[collectionView cellForItemAtIndexPath:indexPath];
    datasetCell.backgroundColor = [UIColor redColor]; // Default color
}

</code>

.H

<code>
@interface PerfilUsuarioViewController : UIViewController <UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout>
</code>
UICollectionView is a subclass of UIScrollView. You should not use UIScrollView subclasses inside a UIScrollView container because they will have issues capturing touches and applying the proper action to gestures. UICollectionViewCells are to be used inside UICollectionViews only. - J2theC
Are you actually trying to put a UICollectionViewCell in a UIScrollView? Or are you trying to embed a collection view inside a scrollview? - Sebastian
Sorry, I'm putting a UICollectionView inside a ScrollView and in the UICollectionView I putting UICollectionViewCell - Anholon
Why are you putting a UICollectionView inside a UIScrollView? That's seems like a pretty weird UI... - CaptJak
I have a screen where you can view the profile of a User. One of the fields is a list of photos, this list of photos is a UICollectionViewCell - Anholon