0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Swiftの .onMove(perform:).onDelete(perform:)サンプルコード

Posted at
import SwiftUI

struct ContentView: View {

    @State private var numbers: [Int] = [1, 2, 3, 4, 5]
    @State private var selectedNumbers: Set<Int> = []

    var body: some View {

        VStack {

            List(selection: $selectedNumbers) {
                ForEach(numbers, id: \.self) { number in
                    Text(String(number))
                }
                .onMove(perform: moveRow)
                .onDelete(perform: removeRow)
            }

            EditButton()
                .padding()
        }
    }

    private func moveRow(from source: IndexSet, to destination: Int) {
        numbers.move(fromOffsets: source, toOffset: destination)
    }

    private func removeRow(at offsets: IndexSet) {
        numbers.remove(atOffsets: offsets)
    }
}

このコードは、SwiftUIでリストビューを作成し、選択や移動、削除の操作を行うためのものです。

@State private var numbers: [Int] = [1, 2, 3, 4, 5]:
numbers は整数の配列を保持する状態プロパティです。この配列はリストビューに表示される項目のデータを表しています。

@State private var selectedNumbers: Set = []:
selectedNumbers は整数のセットを保持する状態プロパティです。このセットは選択された項目のインデックスを表しています。

List(selection: $selectedNumbers) { ... }:
List ビューを作成します。selection パラメータに $selectedNumbers をバインドすることで、選択された項目のインデックスが selectedNumbers に反映されます。

ForEach(numbers, id: .self) { number in ... }:
numbers 配列内の各要素に対して反復処理を行います。id: .self は、各要素を一意に識別するための識別子を指定しています。

onMove(perform: moveRow):
項目の移動操作を設定します。moveRow メソッドが呼び出され、指定されたソースのオフセットから指定された宛先のオフセットに項目が移動します。

onDelete(perform: removeRow):
項目の削除操作を設定します。removeRow メソッドが呼び出され、指定されたオフセットに基づいて項目が削除されます。

EditButton().padding():
編集ボタンを表示します。このボタンをタップすると、リストビューの編集モードが切り替わり、項目の移動や削除が可能になります。

このコードは、整数の配列をリストビューで表示し、選択や移動、削除の操作を実現しています。選択された項目のインデックスは selectedNumbers に格納され、移動や削除の操作によって配列が変更されます。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?