使用数组填充列表时,如何在SwiftUI中获取列表中元素的索引?
在我的SwiftUI应用程序中,我有一个项目列表 我正在使用菜单项数组来填充列表使用数组填充列表时,如何在SwiftUI中获取列表中元素的索引?,swift,swiftui,swiftui-list,Swift,Swiftui,Swiftui List,在我的SwiftUI应用程序中,我有一个项目列表 我正在使用菜单项数组来填充列表 struct MenuItem: Identifiable, Equatable { var id = UUID() var text: String } struct MenuView: View { var menuItems = [MenuItem(text:"Text1"),MenuItem(text:"Text2")]
struct MenuItem: Identifiable, Equatable {
var id = UUID()
var text: String
}
struct MenuView: View {
var menuItems = [MenuItem(text:"Text1"),MenuItem(text:"Text2")]
var body: some View {
List {
ForEach(menuItems) {textItem in
Text(textItem.text)
}
}
}
}
问题是,如何获取textItem的索引
例如,如果我想为奇数行和偶数行使用不同的行颜色,或者如果我需要为编号为3的行实现不同的样式
在SwiftUI中获取列表中项目索引的最佳方法是什么 这可以使用
.enumerated
完成。对于您的菜单项
值,如下所示
List {
ForEach(Array(menuItems.enumerated()), id: \.1.id) { (index, textItem) in
// do with `index` anything needed here
Text(textItem.text)
}
}
这不管用了。。。我得到的类型“_”没有成员“1”@Muvimotv,它适用于主题启动程序代码。如果你的代码不适用,那么你最好用代码发布你自己的问题。;)它能起作用,但效果并不好。在简单的情况下是可以的。但如果您使用@FetchRequest并从核心数据和do数组(items.enumerated())获取数据,则它的工作方式不太理想,即一次加载所有项。如果您在Item entity中存储数千行,并且希望定义.fetchBatchSize=10,那么它将立即执行所有需要的FetchRequests以加载所有数据,如果您在没有此数组的情况下执行相同的设置()enumereated()mix just ForEach(menuItems,id:\.self),它将执行并加载10行的批处理!