我正在构建此项目,并尝试将代码保留在单独的视图中。 这是我正在使用的数组:
struct Nebula: Identifiable{
var id = UUID()
var title: String
var palette: [Palette]
var show: Bool
}
struct Palette : Identifiable{
var id = UUID()
var color: Color
var hexValue: String
}
这是我正在使用的代码:-
import SwiftUI
struct NewHome: View {
@State var palettes = nebulas
var body: some View {
VStack {
ForEach(self.palettes.indices, id: \.self) { idx in
SubView(palette: self.$palettes[idx])
.contextMenu {
ColorBarContextMenuView(
nebs: self.$palettes,
index: idx)
}
}
}
}
}
struct SubView: View {
@Binding var palette: Nebula
var body: some View {
HStack(spacing: 0.0) {
ForEach(self.palette.palette.indices, id: \.self) { index in
GeometryReader { geometry in
Rectangle()
.fill(palette.palette[index].color.opacity(0.7))
}
.frame(height: 90)
}
}
.clipShape(RoundedRectangle(cornerRadius: 10, style: .continuous))
}
}
struct ColorBarContextMenuView: View {
@Binding var nebs: [Nebula]
var index: Int
var body: some View {
VStack{
Button(action: {
self.nebs.removeAll{$0.id == self.nebs[index].id}
}, label:
{
HStack{
Text("Delete")
Image(systemName: "trash.fill")
}
})
}
}
}
当我尝试从星云阵列中删除并遇到通常的问题时,麻烦就来了:-
致命错误:索引超出范围:文件Swift / ContiguousArrayBuffer.swift,第444行
有人尝试过各种解决方案时,有人知道我该如何解决这个问题,但似乎无济于事。