Skip to content

PixelDrawingView: Posible solución para refrescar el borrado #10

Description

@cHuMaRi

No se si será la mejor solución, pero se podría hacer lo siguiente...

En PixelDrawingView declaramos una variable binding para pasarle el array de pixelArts

@Binding public var parentPixelArts: [PixelArt]

Modificamos el init de PixelDrawingView añadiendo el nuevo parámetro parentPixelArts y lo asignamos a la variable Binding:

/// Must be public to allow creating instances out of this package
    public init(pixelArt: Binding<PixelArt>, parentPixelArts: Binding<[PixelArt]>) {
        self._pixelArt = pixelArt
        self._draftPixelArt = State(initialValue: pixelArt.wrappedValue)
        self._parentPixelArts = parentPixelArts
    }

Modificamos el body de PixelDrawingView con lo siguiente:

public var body: some View {
        if !parentPixelArts.contains(where: {$0.id == self.pixelArt.id || $0.name == self.pixelArt.name}) {
            Text("PixelArt has been deleted!")
        }else{

He puesto una doble condición porque el PixelArt.from cambia el "id"... habría que tener una clave id fija que no cambiara.
Asumo que el nombre es clave.

Por último solo faltaría pasar el array de pixelArts en PixelArtListView:

struct PixelArtListView: View {
    
    @State var pixelArts: [PixelArt]
 
    var body: some View {
        NavigationView{
            List($pixelArts) { pixelArt in
                NavigationLink(destination: PixelDrawingView(pixelArt: pixelArt, parentPixelArts: $pixelArts)){

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions