Ce qui se passe
Actuellement, j'ai une application qui utilise deux UICollectionViews
à l'intérieur d'un UITableView
. De cette façon, je crée une application ressemblant à Pulse News. Mon problème est que parfois la 6ème et la 11ème ligne disparaissent complètement, laissant un espace vide là où devrait se trouver la cellule. Cela ne me dérangerait pas vraiment si toutes les cellules étaient comme ça (et ainsi je pourrais supposer que je ne fais pas les choses correctement), mais le problème est que cela ne se produit qu'avec ces cellules spécifiques.
Ma théorie
Les 6e et 11e rangées sont celles qui apparaissent lorsque je commence à défiler, donc par défaut je suis capable de voir 5 cellules, et lorsque je fais le premier défilement horizontal, la 6e apparaît (espace vide parfois).
Ce que j'ai
La seule chose que je fais en ce moment est ceci :
[self.collectionView registerNib:[UINib nibWithNibName:CELL_NIB_NAME bundle:nil] forCellWithReuseIdentifier:CELL_IDENTIFIER];
Sur le viewDidLoad
. Et sur la création de la cellule :
- (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;
}
Donc, pour résumer, il n'y a rien d'extraordinaire ici. Je pensais qu'il y avait un problème avec la source de données (un fichier JSON factice), mais parfois cela fonctionne bien et la cellule s'affiche, donc je suppose que cette partie est correcte.
Donc ma "question" : Quelqu'un sait-il ce qui se passe ? Je n'aime pas vraiment dire que c'est un bug d'iOS, mais je ne vois rien d'autre.
Edit 1.0
La partie étonnante est que cette méthode
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath;
Est-ce que passer de indexPath
[0,4] à [0,6] sans calculer le [0,5]. C'est la première fois que je vois cela se produire dans iOS.
Edit 2.0
J'ai changé la façon dont je crée les cellules, et au lieu de mettre en file d'attente, j'utilise l'ancienne méthode :
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:CELL_NIB_NAME owner:self options:nil];
MyCell *cell = (MyCell *)[nib objectAtIndex:0];
Toujours le même triste résultat.
0 votes
J'obtiens le même problème, mais les cellules qui disparaissent finissent par être rendues en dessous de la cellule précédente ! C'est très étrange. J'ai supposé que c'était un bug dans iOS.
0 votes
Des choses étranges se passent. =/ Mais toujours un contrôleur exceptionnel
0 votes
J'ai une vue de grille classique créée à l'aide d'une vue de collection. J'ai 3 cellules dans une rangée avec de petits espaces. La même chose se produit ici, mais de façon très aléatoire. De temps en temps, une cellule est placée à la quatrième place dans une rangée et à la place attendue, il n'y a rien.