Comment puis-je faire apparaître le bouton Supprimer lorsque je glisse sur un UITableViewCell
? L'événement n'est jamais déclenché et le bouton Supprimer n'apparaît jamais.
ios
uitableview
cocoa-touch
uikit
TheLearner
la source
la source
UITableViewCell
s.Réponses:
Lors du démarrage dans
(-viewDidLoad or in storyboard)
do:Remplacez pour prendre en charge la modification conditionnelle de la vue tabulaire. Cela ne doit être implémenté que si vous allez revenir
NO
pour certains articles. Par défaut, tous les éléments sont modifiables.la source
self.tableView.allowsMultipleSelectionDuringEditing = NO;
pour que le coup gauche fonctionne. Cela me semble être un bug car la table n'est PAS en état d'édition. Cette option ne doit appliquer que "PendantModification". Cependant, cela fonctionne maintenant et je l'ai défini sur OUI chaque fois que la table entre en état d'édition.Cette réponse a été mise à jour vers Swift 3
Je pense toujours que c'est bien d'avoir un exemple très simple et autonome pour que rien ne soit supposé lorsque j'apprends une nouvelle tâche. Cette réponse est celle pour la suppression de
UITableView
lignes. Le projet fonctionne comme ceci:Ce projet est basé sur l' exemple UITableView pour Swift .
Ajoutez le code
Créez un nouveau projet et remplacez le code ViewController.swift par ce qui suit.
La méthode à clé unique dans le code ci-dessus qui permet la suppression de lignes est la dernière. Ici, c'est encore pour souligner:
Storyboard
Ajoutez un
UITableView
au contrôleur de vue dans le storyboard. Utilisez la disposition automatique pour épingler les quatre côtés de la vue de table sur les bords du contrôleur de vue. Contrôlez le glissement de la vue de table dans le storyboard jusqu'à la@IBOutlet var tableView: UITableView!
ligne dans le code.Fini
C'est tout. Vous devriez pouvoir exécuter votre application maintenant et supprimer des lignes en balayant vers la gauche et en appuyant sur "Supprimer".
Variations
Modifier le texte du bouton "Supprimer"
Ajoutez la méthode suivante:
Actions des boutons personnalisés
Ajoutez la méthode suivante.
Notez que cela n'est disponible qu'à partir d'iOS 8. Voir cette réponse pour plus de détails.
Mis à jour pour iOS 11
Les actions peuvent être placées en tête ou en fin de cellule à l'aide de méthodes ajoutées à l'API UITableViewDelegate dans iOS 11.
Lectures complémentaires
la source
UITableView
un , ce projet est tout à fait se seul et vous n'avez pas besoin de faire quoi que ce soit qui ne soit pas décrit ici. La raison pour laquelle j'ai commencé à le définir dans le code est qu'il nécessite moins d'explications dans mes réponses. Je devrais revenir en arrière et modifier l'exemple de base pour utiliser du code aussi.Ce code montre comment implémenter la suppression.
Facultativement, dans votre remplacement d'initialisation, ajoutez la ligne ci-dessous pour afficher l'élément du bouton Modifier:
la source
J'ai eu un problème que je viens de résoudre, donc je le partage car cela peut aider quelqu'un.
J'ai un UITableView et j'ai ajouté les méthodes indiquées pour permettre au balayage de supprimer:
Je travaille sur une mise à jour qui me permet de mettre la table en mode édition et permet la multisélection. Pour ce faire, j'ai ajouté le code de l' exemple TableMultiSelect d'Apple . Une fois que j'ai commencé à travailler, j'ai constaté que mon balayage de la fonction de suppression avait cessé de fonctionner.
Il s'avère que l'ajout de la ligne suivante à viewDidLoad était le problème:
Avec cette ligne, la multisélection fonctionnerait, mais pas le balayage à supprimer. Sans la ligne, c'était l'inverse.
La solution:
Ajoutez la méthode suivante à votre viewController:
Ensuite, dans votre méthode qui met la table en mode édition (à partir d'une pression sur un bouton par exemple), vous devez utiliser:
au lieu de:
Cela signifie que la sélection multiple n'est activée que lorsque la table est en mode édition.
la source
Ci-dessous, UITableViewDataSource vous aidera pour la suppression par balayage
arrYears est un NSMutableArray, puis rechargez la tableView
Rapide
la source
Dans iOS 8 et Swift 2.0, veuillez essayer ceci,
la source
@ La réponse de Kurbz est impressionnante, mais je veux laisser cette note et j'espère que cette réponse pourra faire gagner du temps aux gens.
J'ai parfois eu ces lignes dans mon contrôleur, et elles ont rendu la fonction de balayage inopérante.
Si vous utilisez
UITableViewCellEditingStyleInsert
ouUITableViewCellEditingStyleNone
comme style d'édition, la fonction de balayage ne fonctionne pas. Vous pouvez uniquement utiliserUITableViewCellEditingStyleDelete
, qui est le style par défaut.la source
Swift 4
la source
En outre, cela peut être réalisé dans SWIFT en utilisant la méthode suivante
la source
Swift 3
Il vous suffit d'activer ces deux fonctions:
la source
Je sais que c'est une vieille question, mais la réponse @Kurbz a juste besoin de cela pour Xcode 6.3.2 et SDK 8.3
J'ai besoin d'ajouter
[tableView beginUpdates]
et[tableView endUpdates]
(merci à @ bay.phillips ici )la source
Lorsque vous supprimez une cellule de votre table, vous devez également supprimer votre objet tableau à l'index x.
Je pense que vous pouvez le supprimer en utilisant un geste de balayage. La vue de table appellera le délégué:
Après avoir retiré l'objet. Vous devez recharger l'utilisation de tableview. Ajoutez la ligne suivante dans votre code:
après cela, vous avez supprimé la ligne avec succès. Et lorsque vous rechargez la vue ou ajoutez des données au DataSource, l'objet ne sera plus là.
Pour tous les autres, la réponse de Kurbz est correcte.
Je voulais seulement vous rappeler que la fonction déléguée ne sera pas suffisante si vous souhaitez supprimer l'objet du tableau DataSource.
J'espère que je vous ai aidé.
la source
[tableView reloadData]
appel[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic]
.la source
Swift 2.2:
la source
Pour Swift, il suffit d'écrire ce code
Pour l'objectif C, il suffit d'écrire ce code
la source
pour le code swift4, activez d'abord la modification:
puis vous ajoutez une action de suppression au délégué d'édition:
la source
Swift 4,5
Pour supprimer une cellule lors du balayage, il existe deux méthodes intégrées de UITableView. Écrivez cette méthode dans l'extension TableView dataSource.
la source
Si vous adoptez des sources de données variables, vous devrez déplacer les rappels des délégués vers une
UITableViewDiffableDataSource
sous - classe. Par exemple:la source