从滚动视图获取索引

时间:2019-10-28 04:56:40

标签: swift swiftui

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

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

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)
            }
        })

如果我的数组(命名存储)的类型为type,我的isse现在是

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 
                                    ///
                                }
                            }

                        }
                    }

                }

1 个答案:

答案 0 :(得分:0)

我认为您无需使用任何类似这样的参数就可以做到:

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

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