0

Après avoir supprimé le dernier élément d'une section, l'objectif est de supprimer toute la section, y compris son en-tête, du UICollectionView. Malheureusement, l'en-tête de section persiste même s'il n'y a pas de section dans le modèle de données sous-jacent.En-tête de section persiste même après avoir supprimé les données de section et rechargé UICollectionView

L'actualisation de l'affichage - en le sortant de la pile de navigation et en revenant à la vue - affiche correctement le UICollectionView avec l'en-tête de section supprimé.

Dans le cas de test, il n'y a qu'une seule section, de sorte que UICollectionView deviendrait vide après le retrait de l'élément final.

Suggestions?

func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int { 
    print("# sections: \(USER.getSections().count)") 
    return USER.getSections().count 
} 

    // Delete item 
    let indexPath = view.indexPathsForSelectedItems()![0] 
    let section = USER.getSections()[indexPath.section] 
    USER.removeItemAt(section, index: indexPath.row) 
    view.deleteItemsAtIndexPaths([indexPath]) 

    // Update one section or entire view 
    if (section.getNumItems() > 0) { 
     view.reloadSections(NSIndexSet(index: indexPath.section)) 
    } else { 
     view.deleteSections(NSIndexSet(index: indexPath.section)) 
     view.reloadSections(NSIndexSet(index: indexPath.section)) 
     view.reloadData() 
    } 
+0

Code pour numberOfSectionsInCollectionView? – beyowulf

+0

Hmmm, vérifiant maintenant pour voir s'il y a une erreur. Merci! – Crashalot

+0

@beyowulf pourriez-vous poster une réponse? C'était la bonne suggestion. :) – Crashalot

Répondre

1

Lorsque vous souhaitez supprimer une section d'un UICollectionView vous devez: 1. mettre à jour votre modèle, 2. appel deleteSections(sections: NSIndexSet) sur votre point de vue de la collecte 3. veiller à ce que numberOfSectionsInCollectionView renvoie le nombre approprié de sections pour votre modèle mis à jour.

+0

Merci pour votre aide! Y a-t-il un problème potentiel lors de la suppression de la dernière section dans un UICollectionView? Parce que maintenant cette erreur apparaît même si nous appelons 'deleteSections (sections: NSIndexSet)' et le modèle de données montre le bon nombre de sections (confirmé par la valeur d'impression dans 'numberOfSectionsInCollectionView')? – Crashalot

+0

L'erreur est "Mise à jour non valide: nombre de sections non valide. Le nombre de sections contenues dans la vue de collection après la mise à jour (0) doit être égal au nombre de sections contenues dans la vue de collection avant la mise à jour (1), plus ou moins le nombre de sections insérées ou supprimées (0 insérées, 0 supprimé). '' – Crashalot

+0

Hmmm a remarqué qu'il est dit" 0 supprimé "mais nous appelons' deleteSections (sections: NSIndexSet) ', comme vous pouvez le voir dans le code mis à jour. – Crashalot