SwiftUI: Durch Button View wechseln?

1 Antwort

Um konkret bei dem Button-Beispiel zu bleiben, würde ich dazu wohl so eine Struktur aufbauen:

struct ContentView: View {
  @State var activeView = 0

  var body: some View {
    return Group {
      switch activeView {
        case 0:
          FirstView(activeView: $activeView)
        case 1:
          SecondView()
        default:
          ErrorView()
      }
    }
  }
}

struct FirstView : View {
  @Binding var activeView: Int

  var body: some View {
    VStack {
      Button("Open second view", action: { self.activeView = 1 })
    }
  }
}

struct SecondView : View {
  var body: some View {
    VStack {
      Text("Second view")
    }
  }
}

struct ErrorView : View {
  var body: some View {
    VStack {
      Text("Error view")
    }
  }
}

Du hast also ein zentrales View, welches anhand des Zustands von activeView entscheidet, welches View in ihm angezeigt werden soll. Die View mit dem Button bindet sich an den Wert dieses Properties (dazu übergibt ihm die zentrale View die Referenz dazu). Bei Buttonklick wird der Wert des Properties geändert, die Änderung sollte sich auf den Zustand der zentralen View auswirken.

Fernab dieser Methode hat man in Swift aber wohl eher das NavigationLink-Element vorgesehen, um zwischen Views zu wechseln. Hier findest du einen kurzen Artikel dazu: SwiftUI: Navigating from One View to Another with NavigationView.