Comment faire pour supprimer le point de vue de collection?
J'essaie de supprimer un élément de la collectionview basée sur le choix de l'utilisateur d'alerte
J'ai code suivant
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
let person = people[indexPath.item]
let questionController = UIAlertController(title: "What u wanna do?", message: nil, preferredStyle: .Alert)
questionController.addAction(UIAlertAction(title: "Rename person", style: .Default, handler: {
(action:UIAlertAction!) -> Void in
let ac = UIAlertController(title: "Rename person", message: nil, preferredStyle: .Alert)
ac.addTextFieldWithConfigurationHandler(nil)
ac.addAction(UIAlertAction(title: "Cancel", style: .Cancel, handler: nil))
ac.addAction(UIAlertAction(title: "OK", style: .Default) { [unowned self, ac] _ in
let newName = ac.textFields![0] as! UITextField
person.name = newName.text
self.collectionView.reloadData() })
self.presentViewController(ac, animated: true, completion: nil)
}))
questionController.addAction(UIAlertAction(title: "Delete Person", style: .Default, handler: {
(action:UIAlertAction!) -> Void in
println("hello world")
self.collectionView.deleteItemsAtIndexPaths([indexPath.item])
self.collectionView.reloadData()
}))
presentViewController(questionController, animated: true, completion: nil)
}
bonjour tout le monde travaille bien et application se bloque lorsque j'appuie sur supprimer la personne
sortie de la console est
hello world
2015-07-18 13:40:14.628 Project10[15888:1274436] -[__NSCFNumber section]: unrecognized selector sent to instance 0xb000000000000003
2015-07-18 13:40:14.636 Project10[15888:1274436] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFNumber section]: unrecognized selector sent to instance 0xb000000000000003'
ce que je fais mal ?
OriginalL'auteur Alexey K | 2015-07-18
Vous devez vous connecter pour publier un commentaire.
Vous devriez changer
à
deleteItemsAtIndexPaths
attend un tableau deNSIndexPath
s, pas un tableau de nombres.En outre, si vous appelez
deleteItemsAtIndexPaths
vous n'avez pas besoin d'un appel àreloadData
- ce sera même l'empêcher toute animation de passe.N'oubliez pas de mettre à jour votre source de données - la personne doit être retiré de la
people
tableau.Ce faire avant appel
deleteItemsAtIndexPaths
.N'oubliez pas de mettre à jour votre source de données - la personne doit être retiré de la
people
tableau.désolé, im nouveau à swift - comment mettre à jour la source de données ?
Utilisation
removeAtIndex
- voir la mise à jour de réponse.j'ai ajouté de soi.personnes.removeAtIndex(indexPath.point) après l'auto.collectionView.deleteItemsAtIndexPaths([indexPath]), mais il se bloque toujours avec la même erreur
OriginalL'auteur Glorfindel