質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Safari

SafariはAppleのウェブブラウザであり、Mac OS XとiOSのデフォルトのブラウザです。

タブ

コンテンツの上下左右に参照用のメニューを設けることで、複数の要素やページの表示を可能にするユーザーインターフェイスパターンのこと。メニューをクリックすると、一つの要素が可視化され、他の要素は見えなくなる。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

0回答

1044閲覧

【SwiftUI】リストのセルをSafariのタブのように長押しによって並び替えたい

kureid

総合スコア3

Safari

SafariはAppleのウェブブラウザであり、Mac OS XとiOSのデフォルトのブラウザです。

タブ

コンテンツの上下左右に参照用のメニューを設けることで、複数の要素やページの表示を可能にするユーザーインターフェイスパターンのこと。メニューをクリックすると、一つの要素が可視化され、他の要素は見えなくなる。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2021/03/02 08:56

前提・実現したいこと

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を紐付ける方法だと認識しているのですが,その点も含めて解決策をご教示いただけましたら幸いです.
何卒よろしくお願いいたします.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問