Célula do UICollectionView desaparecendo
O que está acontecendo
Atualmente eu tenho um aplicativo que usa doisUICollectionViews
dentro de umUITableView
. Desta forma eu crio uma aparência do Pulse News como aplicação. Meu problema com isso é que às vezes a 6ª e a 11ª linha desaparecem completamente, deixando um espaço em branco onde deveria estar a célula. Eu realmente não me importaria, se todas as células fossem assim (e assim eu poderia assumir que eu não estava fazendo as coisas corretamente), mas a coisa é, está acontecendo apenas com aquelas específicas.
Minha teoria
As linhas 6 e 11 são as que aparecem quando eu começo a rolar, então por padrão eu consigo ver 5 células, e quando eu faço a primeira rolagem horizontal aparece a 6ª (espaço em branco às vezes).
O que eu tenho
A única coisa que estou fazendo no momento é esta:
[self.collectionView registerNib:[UINib nibWithNibName:CELL_NIB_NAME bundle:nil] forCellWithReuseIdentifier:CELL_IDENTIFIER];
NoviewDidLoad
. E na criação da célula:
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
MyCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:CELL_IDENTIFIER forIndexPath:indexPath];
NSMutableDictionary *dictionary = [self.DataSource objectAtIndex:[indexPath row]];
[cell buildViewWithDictionary:dictionary withReferenceParent:self.referenceViewController];
return cell;
}
Então, na minha compreensão nada de fantasia acontecendo aqui. Eu pensei que havia algo errado na fonte de dados (um arquivo JSON fictício), mas às vezes funciona bem e a célula mostra, então eu acho que a parte está ok.
Então, minha "pergunta": Alguém sabe o que está acontecendo? Eu não gosto de dizer que é um bug do iOS, mas não consigo pensar em mais nada.
Editar 1.0
A parte surpreendente é que esse método
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath;
Vai deindexPath
[0,4] a [0,6] sem calcular o [0,5]. A primeira vez que vejo isso acontecendo no iOS.
Editar 2.0
Eu mudei o jeito que eu estou criando as células, e ao invés de desenfileirar estou usando o antigo:
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:CELL_NIB_NAME owner:self options:nil];
MyCell *cell = (MyCell *)[nib objectAtIndex:0];
Ainda o mesmo triste resultado.