swift - 从滚动视图中获取索引
问题描述
当用户长按它时,我尝试从滚动视图中删除项目。
所以,如果滚动视图的项目来自一个简单的数组(命名为 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
///
}
}
}
}
}
解决方案
我认为您可以在不使用任何这样的参数的情况下做到这一点:
Text(item.icaoAirport).onLongPressGesture {
self.dm.storage.remove
}
通常,它应该可以工作。我将这种技术与.onDelete(self.dm.storage.remove)
. 如果它不起作用,我建议您在模型中添加一个 ID。
推荐阅读
- android - 如何使用 Qt/C++ 小部件(不是 QML)从 Android 相机获取图像
- c# - 如何在 Xamarin Visual Studio 中使用 App ID
- javascript - 异步对象 Promise 作为回调
- angular - 更新组件负载的变量
- macos - 如何在 SwiftUI 中获取已删除文件的文件名?
- postgresql - 创建一个创建新序列的过程/函数
- java - Guice 和通用工厂
- java - 当我不知道组是多少时,如何将字符串存储为组?(在Java中)
- ios - 当我上下滚动 UICollectionView 时,视图高度约束设置不正确
- angular - WPF 的 ContentPresenter 的 Angular 等价物是什么?