J'ai un Le problème est que si un utilisateur est déposé sur une cellule, la mise à jour se produit lorsque l'utilisateur libère les restes de cellules en surbrillance et ne peut plus être sélectionné. P>
J'ai remarqué que J'ai aussi essayé Placer les appels à l'intérieur uicollectionview code> avec des étiquettes à l'intérieur des cellules qui changent automatiquement périodiquement. Lorsque cette mise à jour déclenche, j'appelle
reloaddata code> sur l'uicollectionview et j'ai défini les cellules pour modifier la couleur d'arrière-plan sur
[uicollectionviewcell Sethighlighted:]. Code> P>
DEQUUEREUSABLECELLWITHIDIdentifier: ForindexPath: Code> Les appels Sethighlight sur les cellules après Reloaddata. P>
rechargetions: code> au lieu de ReloaderData, cela corrige le problème des cellules 'bloquées', mais provoque une disparition et une disparition sur les cellules lorsque jamais. P >
EffectuerBatchUpdates: code> ne semble pas corriger le problème non plus. p>
5 Réponses :
J'ai utilisé ce qui suit comme solution de contournement:
Cette méthode a fonctionné pour moi - empêchez simplement la vue de la collection à partir de la rechargement tandis qu'un élément est mis en surbrillance et recharger si nécessaire après que l'article ne soit pas immaculé.
J'utilise les vues de la collection dans l'un de mes projets récents et le code suivant fonctionne bien pour moi. dans la sous-classe CollectionviewCell P> @Interface SalesLesLeGendcell: Uicollectionviewcell p> ci-dessous est le code p>
à l'intérieur de la classe de la cellule Essayez appeler:
- (void)prepareForReuse { [super prepareForReuse]; [self setHighlighted:NO]; ... Any other custom stuff that should be cleaned up ... }
Nettoyage des trucs personnalisés dans PreyPreyForRuse est évidemment un must-do pour Uicollectionviewcell. Mais je ne voyais pas comment votre réponse aidera à ré-mettre en surbrillance la cellule et à résoudre le problème de la cellule "empilée" après l'appel de ReloadData.
@Alexanderdvornikov: Est-il juste que vous souhaitiez que la cellule reste sélectionnée par l'utilisateur après une recharge? Ou pouvons-nous définir la cellule sur l'état désélectionné et que l'utilisateur doit les sélectionner à nouveau?
Vous avez raison, je m'attends au même comportement que dans UitailView - lorsque la vision de la TableView est rechargée, une cellule pressée doit rester en surbrillance. Fondamentalement, vous pouvez trouver le même bug dans les applications Google Drive ou eBay - lorsque l'utilisateur met en évidence les cellules après la triggete, les recharges de la vue de collecte de contenu et les cellules pressées sont en surbrillance et empilées.
J'ai rencontré le même problème dans une vue de collection qui n'avait pas besoin de surbrillance et j'ai remarqué que les méthodes de Didhighlight / DidunHighighlight se sont comportées correctement, donc j'ai fini par bloquer les recharges alors qu'une touche était en cours, en utilisant quelque chose comme ceci:
-(void)CollectionViewRefresh { if(blockColviewUpdate==YES) colviewUpdateQueued=YES; else { colviewUpdateQueued=NO; [self.colview reloadData]; } }
Peut-être sans lien, mais ce peu moi: uiimage code> des instances rendues sur un
uiviewcollectioncell code> dans
.alway SystemPlate code> Mode Get par défaut en surbrillance. P >
Avez-vous mis en œuvre le DIDUNHIGHERLLightematidexPath: B> pour changer la couleur de fond cellulaire ??
Il ne semble pas que la couleur de fond soit définie ou non, la cellule devient toujours désilectable.
Cela semblait empêcher la fondu in / sortant sur
rechargections: code> Stackoverflow.com/a/15068865/667834 a>