首页 > 解决方案 > 从滚动视图中获取索引

问题描述

当用户长按它时,我尝试从滚动视图中删除项目。

所以,如果滚动视图的项目来自一个简单的数组(命名为 post),我设法使用 firstIndex(of: item)完成问题!和

ScrollView(.horizontal, content: {
            HStack(spacing: 100) {
                ForEach(post, id: \.self){ item in

                    ZStack {

                        Text(item).onTapGesture {

                            self.post.remove(at: self.post.firstIndex(of: item)!)
                        }
                    }
                }
                .padding(.leading, 10)
            }
        })

我现在的问题是,如果我的数组(命名存储)是模型类型:

class DataModel:Identifiable , Codable {
    var nameAirport : String
    var countryAirport : String
    var icaoAirport : String
    var metar: String
    var taf : String

如何找到要在方法 remove 中传递的索引?.firstIndex(at:) 不存在我只找到 .firstIndex(where:) 但我找不到如何使用它?知道如何找到这个索引吗?

在我的代码下面?谢谢你帮助我...

 ScrollView(.horizontal, showsIndicators: true) {
                    HStack(spacing: 10) {
                        ForEach(dm.storage) { item in

                            VStack {

                       Text(item.icaoAirport).onLongPressGesture {

                                    self.dm.storage.remove(at: ) //// how can i get index 
                                    ///
                                }
                            }

                        }
                    }

                }

标签: swiftswiftui

解决方案


我认为您可以在不使用任何这样的参数的情况下做到这一点:

Text(item.icaoAirport).onLongPressGesture {
    self.dm.storage.remove
}

通常,它应该可以工作。我将这种技术与.onDelete(self.dm.storage.remove). 如果它不起作用,我建议您在模型中添加一个 ID。


推荐阅读