SwiftUI Academy · レッスン

スワイプで行を削除する

onDelete で項目を削除します。

レッスン 1/413 ステップ

「スワイプで行を削除する」はCoddyKit上の無料SwiftUI Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSwiftUI Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 SwiftUI Academyコースには全4レッスンが含まれています。

行を削除できるリスト

静的なリストはデータを表示するだけです。実際のアプリではユーザーが要素を削除でき、SwiftUIなら簡単なスワイプで自然な削除操作を実現できます。✨

onDeleteを使う

onDeleteモディファイアは、List内のForEachに追加します。左へスワイプすると赤いDeleteボタンが表示されるようになります。

データはStateに保持する

行を削除するには、データを自分で管理している必要があります。配列を@Stateに保持すると、変更が画面上のリストにすぐ反映されます。

struct Item: Identifiable {
    let id = UUID()
    var name: String
}

配列を宣言する

要素は変更可能な@State配列に保持します。要素を削除すると、SwiftUIが行を自動的にアニメーションで消してくれます。

@State private var items = [
    Item(name: "Milk"),
    Item(name: "Eggs")
]

IndexSet引数

onDeleteは、ユーザーがスワイプした行のIndexSetを渡します。複数の行を一度に削除できるため、集合になっています。

オフセットで削除する

そのIndexSetを配列のremove(atOffsets:)メソッドにそのまま渡します。1行で、スワイプされた要素だけを安全に削除できます。

func delete(at offsets: IndexSet) {
    items.remove(atOffsets: offsets)
}

すべてを接続する

List内のForEachに行を配置し、onDeleteを追加して削除関数を呼び出します。これが基本パターンのすべてです。

List {
    ForEach(items) { item in
        Text(item.name)
    }
    .onDelete(perform: delete)
}

インラインクロージャも使える

名前付き関数を省略し、処理が小さい場合はonDeleteの中にクロージャとして削除処理を直接書くこともできます。

.onDelete { offsets in
    items.remove(atOffsets: offsets)
}

スワイプアニメーションを自動化する

itemsが@Stateなので、SwiftUIは変更前後を比較し、削除した行を滑らかにスライドさせます。animationを自分で書く必要はありません。

ListではなくForEachに追加する

よくある間違いは、ListにonDeleteを追加することです。配列を行に対応付けるForEachに追加する必要があります。

カスタムスワイプアクション

削除以外の操作にはswipeActionsを使います。左右どちらの端にも、ArchiveやFlagのような色付きボタンを追加できます。

.swipeActions {
    Button("Flag") { }
        .tint(.orange)
}

理解度チェック

onDeleteモディファイアはどこに追加しますか?

まとめ:スワイプで削除

itemsを@Stateに保持し、onDeleteをForEachに追加して、remove(atOffsets:)でスワイプされた行を削除する方法を学びました。🎉

無料で開始

AI チューターと学ぶ Swift — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
30
レッスン
120

よくある質問

「スワイプで行を削除する」レッスンは無料ですか?

はい。「スワイプで行を削除する」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、SwiftUI Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 SwiftUI Academyコースには全4レッスンが含まれています。

「スワイプで行を削除する」で何を学びますか?

onDelete で項目を削除します。 ブラウザで直接実行するハンズオンコードでSwiftUI Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

SwiftUI Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのSwiftUI Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「スワイプで行を削除する」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このSwiftUI Academyレッスンでコードを書いて実行できますか?

はい。すべてのSwiftUI Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. スワイプで行を削除する
  2. onMove による並べ替え
  3. 新しい項目の追加
  4. プルして更新
← SwiftUI Academyに戻る