1
resposta

Me ajudem!!!

I have a view with an array:

@State private var categoria = [ "Acessórios para Veículos", "Agro", "Alimentos e Bebidas", "Animais",

and a foreach loop

ForEach(categoria, id: .self) { categoria in NavigationLink(destination: Destino(categoria: $categoria)) { Text(categoria) }

in other view (Destino) i want to receive the categoria of selected by user.

i try @Binding var categoria: [String]

ForEach(viewModel2.anuncios.filter({ "($0)".contains(categoria[?]) })) { anuncio in ClassRowView(anuncio:anuncio) }

But i neet to use [?] and i dont have the exact array that the user selected. Can u help me? how i can pass the correct value in contains(categoria) ?

Thanks!!

1 resposta

Oi Guilherme, tudo bem?

Primeiramente, desculpe a demora para responder!

O que você pode fazer é usar o ForEach() de maneira com que você consiga o índice do elemento. Por exemplo:

NavigationView {
      VStack {
        ForEach(0..<categorias.count, id: \.self) { categoria in
          NavigationLink(destination: Destino(categoria: $categorias[categoria])) {
            Text(categorias[categoria])
          }
        }
    }
}

Ou, você também pode passar o index do elemento para a view Destino, de maneira com que você consiga fazer o filter como deseja:

NavigationView {
      VStack {
        ForEach(0..<categorias.count, id: \.self) { categoria in
          NavigationLink(destination: Destino(categoria: $categorias[categoria]), index: categoria) {
            Text(categorias[categoria])
          }
        }
    }
}

Espero ter ajudado, abraços =)