SwiftUI Academy · Lezione

Riordinare con onMove

Trascinare le righe per riordinarle.

Lezione 2 di 413 passaggi

Riordinare con onMove è una lezione SwiftUI Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento SwiftUI Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso SwiftUI Academy include 4 lezioni in totale.

Permettere agli utenti di riordinare le righe

A volte l'ordine è importante, ad esempio in una lista di attività ordinate per priorità. SwiftUI permette di trascinare le righe in un nuovo ordine con pochissimo codice aggiuntivo. ✨

Ecco onMove

Il modifier onMove viene applicato a ForEach e attiva le maniglie di trascinamento, così le righe possono essere spostate e rilasciate altrove.

La firma di Move

onMove fornisce due elementi: un IndexSet delle righe da spostare e un indice Int di destinazione in cui inserirle.

func move(from source: IndexSet,
          to destination: Int) {
}

Un solo metodo dell'array è sufficiente

Gli array Swift hanno il metodo integrato move(fromOffsets:toOffset:), che esegue il riordinamento al posto suo con una sola chiamata sicura.

items.move(fromOffsets: source,
           toOffset: destination)

Collegare onMove

Applichi onMove(perform:) a ForEach e lo colleghi alla funzione di spostamento. La lista ora supporta il riordinamento tramite trascinamento.

ForEach(items) { item in
    Text(item.name)
}
.onMove(perform: move)

La modalità di modifica mostra le maniglie

Le maniglie di trascinamento spesso compaiono solo in modalità di modifica. Un EditButton nella toolbar attiva la modalità di modifica della lista, consentendo agli utenti di riordinare le righe.

.toolbar {
    EditButton()
}

Riordinare senza la modalità di modifica

In una List plain, spesso le righe possono essere trascinate immediatamente. La modalità di modifica è soprattutto necessaria quando espone anche i controls per eliminare e spostare.

Lo State conserva l'ordine

Poiché move() modifica l'array @State, il nuovo ordine rimane dopo gli aggiornamenti della view e si riflette ovunque venga letto quell'array.

Combinare spostamento ed eliminazione

Può applicare sia onMove sia onDelete allo stesso ForEach, offrendo agli utenti il pieno controllo per riordinare e rimuovere le righe.

ForEach(items) { Text($0.name) }
    .onDelete(perform: delete)
    .onMove(perform: move)

Closure inline per lo spostamento

Come per l'eliminazione, può scrivere inline il riordinamento. Chiami direttamente move(fromOffsets:toOffset:) nella closure di onMove.

.onMove { source, dest in
    items.move(fromOffsets: source,
               toOffset: dest)
}

Animazioni fluide durante il trascinamento

SwiftUI anima automaticamente il sollevamento, lo scorrimento e l'assestamento delle righe trascinate. Ottiene un motion curato senza scrivere codice per l'animazione.

Verifica rapida

Che cosa fornisce onMove al suo handler?

Riepilogo: riordinare le righe

Ha aggiunto il riordinamento tramite trascinamento applicando onMove a un ForEach e chiamando move(fromOffsets:toOffset:) sull'array nello State. 🎉

Gratis per iniziare

Impara Swift con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
30
Lezioni
120

Domande Frequenti

La lezione «Riordinare con onMove» è gratuita?

Sì — il testo completo di «Riordinare con onMove» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso SwiftUI Academy, passa a CoddyKit PRO. Il corso SwiftUI Academy include 4 lezioni in totale.

Cosa imparerò in «Riordinare con onMove»?

Trascinare le righe per riordinarle. Eserciti SwiftUI Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare SwiftUI Academy?

Non è richiesta alcuna esperienza precedente. SwiftUI Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «Riordinare con onMove»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione SwiftUI Academy?

Sì. Ogni lezione SwiftUI Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Eliminare le righe con uno swipe
  2. Riordinare con onMove
  3. Aggiungere nuovi elementi
  4. Aggiornare tramite trascinamento
← Torna a SwiftUI Academy