SwiftUI获取数组致命错误:嵌套的ForEach和View索引超出范围

时间:2020-10-13 15:57:18

标签: ios swift swiftui

我正在构建此项目,并尝试将代码保留在单独的视图中。 这是我正在使用的数组:

    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行

有人尝试过各种解决方案时,有人知道我该如何解决这个问题,但似乎无济于事。

0 个答案:

没有答案