【SwiftUI】ListとEditActions(iOS16/iPadOS16)

SwiftUI

iOS16/iPadOS16でListにも追加がありました。
EditActionsが追加され、Listからの削除と移動を簡単に実装できるようになりました。

struct ContentView: View {
    
    @State var listItems:[Int] = Array(1..<10)
    
    var body: some View {
        NavigationStack{
            List($listItems, id: \.self, editActions: [.delete, .move]){ item in
                Text("\(item.wrappedValue)")
            }
            .toolbar{
                EditButton()
            }
        }
    }
}

これだけでスワイプでの削除と、EditButtonでの移動と削除が可能です。

Listに渡すコレクションを@Stateで宣言します。
Listの引数には$付きで渡し、editActionsでdelete、moveの指定をします。

EditActionsには現在.all、.delete、.moveの3種類があります。
両方を指定したい場合はallを使っても良いかもしれません。

なお現状では削除や移動時に処理を追加する方法はなさそうなので、
何らかの処理が必要な場合はonChangeで配列の変更を検知するか、
以前の様にForEachのonDeleteやonMoveを使用しましょう。

※NavigationStackに関してはiOS16なのでEditButtonを出すためにこちらを使用しただけで、
あくまでList側の追加機能なのでNavigationViewでも問題ありません。

コメント

タイトルとURLをコピーしました