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 に格納され、移動や削除の操作によって配列が変更されます。