前提・実現したいこと
SwiftUIを用いて開発しているアプリで,リストのセルを長押しした場合,スライドしてセルを並び替える機能を作成したいと考えています.(Safariのタブの入れ替えのイメージ)
該当のソースコード
swift
1import SwiftUI 2 3struct ContentView: View 4{ 5 @State var data = [ 6 "Test 1","Test 2","Test 3","Test 4","Test 5", 7 "Test 6","Test 7","Test 8","Test 9","Test 10", 8 "Test 11","Test 12","Test 13","Test 14","Test 15", 9 "Test 16","Test 17","Test 18","Test 19","Test 20" 10 ] 11 12 var body: some View 13 { 14 List 15 { 16 ForEach(data, id:.self) 17 { 18 item in 19 Text(item) 20 .onLongPressGesture{ print("longPressed", item)} 21 }.onMove { (indexSet, index) in 22 self.data.move(fromOffsets: indexSet, toOffset: index) 23 } 24 25 } 26 } 27} 28 29struct ContentView_Previews: PreviewProvider { 30 static var previews: some View { 31 ContentView() 32 } 33}
試したこと
Longpress and list scrolling(Apple Developer Forums)にて記述されているTest10と思しきコードを活用し,onMoveを記述してみましたが,長押しをしてもセルを動かすことはできませんでした.
補足情報(FW/ツールのバージョンなど)
使用環境は以下のようになっています.
iMac bigsur 11.2.1
xcode 12.4
swift 5
現状,私が理解できていないのは,onLongPressGetstureとdata.moveを紐付ける方法だと認識しているのですが,その点も含めて解決策をご教示いただけましたら幸いです.
何卒よろしくお願いいたします.
あなたの回答
tips
プレビュー