Swift・iOS

Swiftを中心に学んだことを記録に残すブログです。技術に関係ない記事もたまに書いています。

【SwiftUI】Listの行を並び替える

 

はじめに

Listの行を並び替える実装について記事に残します。

 

開発環境

 

イメージ

f:id:hfoasi8fje3:20210331213634g:plain

 

実装

NavigationViewにEditButtonを追加し、"onMove(perform:)"を使うと行を並び替えることができるようになる。

参考:

https://developer.apple.com/documentation/swiftui/dynamicviewcontent/onmove(perform:)

ContentView.swift

import SwiftUI

struct ContentView: View {
    @State private var regions = ["北海道", "東北", "関東", "中部", "近畿", "中国", "四国", "九州"]
    
    var body: some View {
        NavigationView {
            List {
                ForEach(regions, id: \.self) { region in
                    Text(region)
                }
                .onMove { indexSet, toOffset in
                    regions.move(fromOffsets: indexSet, toOffset: toOffset)
                }
            }
            .listStyle(InsetGroupedListStyle())
            .navigationTitle("地方")
            .navigationBarTitleDisplayMode(.inline)
            .toolbar { EditButton() }
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

 

おわりに

sheetでListを表示した状態で行を編集しようとしたらエラーが発生したので、発生した時の具体的な状況と解決方法は別途記事に残そうと思います笑

 

参考