Saltar al contenido

SwiftUI ToolbarItem no presenta una vista desde un NavigationLink

Solución:

NavigationLink debiera ser dentro NavigationView. La barra de herramientas no está en NavigationView, ponle botones.

Asumiendo que tienes algo en el padre

NavigationView {
   MyView()
}

aquí hay una solución:

struct MyView: View {
  
  @ObservedObject var viewModel = MyViewModel()
  @State private var showNew = false

  var body: some View {
    List(viewModel.data, id: .name) { data in
      NavigationLink(destination: MyDetailView(data: data.name)) {
        Text(data.name)
      }
    }
    .listStyle(InsetGroupedListStyle())
    .background(
        NavigationLink(destination: MyDetailView(), isActive: $showNew) {
          EmptyView()
        }
    )
    .edgesIgnoringSafeArea(.all)
    .toolbar {
      ToolbarItem(placement: .navigationBarTrailing) {  
        Button("New Element") {
            self.showNew = true
        }
      }
    }
  }
}

Descubrí que usar un HStack con un texto vacío como primer elemento también funciona, permite que el navigationLink actúe correctamente.

        .toolbar {
        ToolbarItem(placement: .navigationBarLeading) {
            HStack {
                Text("")
                NavigationLink(destination: SettingsView()) {
                    Image(systemName: "gear")
                        .font(.title)
                }
            }
        }
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *