Réorganiser avec onMove
Faites glisser les lignes pour les réorganiser.
Réorganiser avec onMove est une leçon SwiftUI Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage SwiftUI Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours SwiftUI Academy comprend 4 leçons au total.
Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.
Let Users Reorder Rows
Sometimes order matters, like a to-do priority list. SwiftUI lets people drag rows into a new order with almost no extra code. ✨
Meet onMove
The onMove modifier sits on your ForEach and enables drag handles so rows can be picked up and dropped elsewhere.
The Move Signature
onMove gives you two things: an IndexSet of the rows being moved and an Int destination index where they should land.
func move(from source: IndexSet,
to destination: Int) {
}One Array Method Does It
Swift arrays have a built-in move(fromOffsets:toOffset:) that performs the reorder for you in a single, safe call.
items.move(fromOffsets: source,
toOffset: destination)Wiring onMove Up
Attach onMove(perform:) to the ForEach and point it at your move function. The list now supports drag-to-reorder.
ForEach(items) { item in
Text(item.name)
}
.onMove(perform: move)Edit Mode Reveals Handles
Drag handles often appear only in edit mode. An EditButton in the toolbar flips the list into editing so users can reorder.
.toolbar {
EditButton()
}Reorder Without Edit Mode
Inside a plain List, rows are frequently draggable straight away. Edit mode mainly matters when you also expose delete and move controls.
State Keeps Order Persistent
Because move() mutates your @State array, the new order survives view refreshes and reflects everywhere that array is read.
Combine Move and Delete
You can attach both onMove and onDelete to the same ForEach, giving users full control to reorder and remove rows.
ForEach(items) { Text($0.name) }
.onDelete(perform: delete)
.onMove(perform: move)Inline Move Closure
Like delete, you can write the reorder inline. Just call move(fromOffsets:toOffset:) directly inside the onMove closure.
.onMove { source, dest in
items.move(fromOffsets: source,
toOffset: dest)
}Smooth Drag Animations
SwiftUI animates the lift, slide, and settle of dragged rows automatically. You get polished motion with zero animation code.
Quick Check
What does onMove provide to your handler?
Recap: Reordering
You added drag-to-reorder by attaching onMove to a ForEach and calling move(fromOffsets:toOffset:) on your state array. 🎉
Questions Fréquemment Posées
La leçon « Réorganiser avec onMove » est-elle gratuite ?
Oui — le texte complet de « Réorganiser avec onMove » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours SwiftUI Academy, passe à CoddyKit PRO. Le cours SwiftUI Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Réorganiser avec onMove » ?
Faites glisser les lignes pour les réorganiser. Tu pratiques SwiftUI Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer SwiftUI Academy ?
Aucune expérience préalable n'est requise. SwiftUI Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « Réorganiser avec onMove » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon SwiftUI Academy ?
Oui. Chaque leçon SwiftUI Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Supprimer des lignes par balayage
- Réorganiser avec onMove
- Ajouter de nouveaux éléments
- Actualiser en tirant