这是我的简单应用程序.在那里我使用.onMove方法来更改我的商品的顺序.但现在我只能改变顺序,但这并不能保存它(在新的位置上离开).因此,当我不再拿着我的物品时,它立即回到了原来的位置.你觉得我能怎么修好它?

import SwiftUI

struct HomeView: View {
    
    struct Item: Identifiable {
        var id = UUID()
        var name: String
        var color: Color
    }
    
    @State var items = [
        Item(name: "Item 1", color: .red),
        Item(name: "Item 2", color: .green),
        Item(name: "Item 3", color: .blue),
        Item(name: "Item 4", color: .brown)
    ]
    
    var body: some View {
        List {
            ForEach(items, id: \.id) { item in
                Text(item.name)
                    .frame(maxWidth: .infinity)
                    .padding()
                    .background(item.color)
                    .foregroundColor(.white)
            }
            .onMove(perform: move)
        }
    }

    func move(from source: IndexSet, to destination: Int) {
        items.move(fromOffsets: source, toOffset: destination)
    }
}

struct HomeView_Previews: PreviewProvider {
    static var previews: some View {
        HomeView()
    }
}

推荐答案

当你在模拟器或设备上测试时,它可以工作.这是SwiftUI预览的奇怪行为.不知道为什么它在那里不能正常工作. 在预览中,只有在启用EditMode的情况下才能工作.

对于推荐,您可以通过列表本身处理移动:

var body: some View {
    List($items, editActions: .move) { $item in
        Text(item.name)
            .frame(maxWidth: .infinity)
            .padding()
            .background(item.color)
            .foregroundColor(.white)
    }
}

一切都开箱即用;) 你也可以通过Feedback Assistant来报告这个问题

Ios相关问答推荐

如何创建自定义组件来接受(和传递)所有可能的Textfield参数?

AVFoundation Camera推出变焦SWIFT

在视图上执行手势会阻止相机操作

如何在@AppStorage中存储字体?

无法向委托发送数据

swiftui动画如何实时确定不对称过渡

如何使用 pushViewController 从 UIHostingController 的 SwiftUI 视图中推送 ViewController?

SKScene 的更新功能似乎不起作用

通过 Rosetta 打开模拟器 xcode 14 以修复滚动

Swiftui为什么在点击第二行之前背景不起作用

在所有 tableview / collectionview 中禁用滚动指示器

按钮在 SwiftUI 中没有采用给定的高度和宽度

在iOS7半透明导航栏中获取正确的 colored颜色

如何以编程方式调用视图控制器?

无法验证客户端 3000

如何在 iOS 的 xib 中设置十六进制 colored颜色 代码

使用 convertPoint 获取父 UIView 内的相对位置

如何在 OS X 或 iOS(不使用格式塔)中确定运行时的操作系统版本?

呈现和关闭模态视图控制器

UITableView:从空白部分隐藏标题