首页 > 解决方案 > SwiftUI:如何将列表中的项目拖放到相同(另一个)列表中的另一个项目中

问题描述

我是 swift ui 的新手,我正在构建一种文件管理器视图 A 有 2 个列表(文件夹列表和文件列表)。如何将文件列表中的文件项移动到文件夹列表中的文件夹中,并将文件夹列表中的文件夹项移动到另一个文件夹中。我认为屏幕截图应该可以帮助您理解我的问题: 我的应用程序的屏幕截图

注意:我不想在列表之间重新排序或移动项目。我想将项目拖到(进入)文件夹并调用我的 API。

List {
                    ForEach(self.filemanager.folders, id: \.self) { folder in
                        FolderItemView(folder: folder)
                            .listRowBackground(Color.white)
                            .onTapGesture(count: 2) {
                                if (!self.isEditable) {
                                    withAnimation {
                                        self.filemanager.openFolder(folder: folder)
                                    }
                                }
                            }
                            .onTapGesture(count: 1) {
                                if (!self.isEditable) {
                                    self.folderToViewDetails = folder
                                }
                            }
                            .onLongPressGesture {
                                withAnimation {
                                    self.isEditable.toggle()
                                }
                            }
                    }//.onMove(perform: onMove)
                    .onDelete(perform: onDeleteFolder)
                    .sheet(item: self.$folderToViewDetails) { item in
                        FolderDetailedView(
                            folder: item,
                            filemanager: self.filemanager
                        )
                            .environmentObject(self.filemanager.appSettings)
                            .padding(.top, 16)
                    }
                    ForEach(self.filemanager.files, id: \.self) { file in
                        FileItemView(file: file)
                            .listRowBackground(Color.white)
                            .onTapGesture() {
                                if (!self.isEditable) {
                                    self.fileToViewDetails = file
                                }
                            }
                            .onLongPressGesture {
                                withAnimation {
                                    self.isEditable.toggle()
                                }
                            }
                    }//.onMove(perform: onMove)
                    .onDelete(perform: onDeleteFile)
                    .sheet(item: self.$fileToViewDetails) { item in
                        FileDetailedView(
                            file: item,
                            filemanager: self.filemanager
                        )
                            .environmentObject(self.filemanager.appSettings)
                            .padding(.top, 16)
                    }
                }.environment(\.editMode, isEditable ? .constant(.active) : .constant(.inactive))

标签: swiftlistviewdrag-and-dropswiftui

解决方案


推荐阅读