[英]NavigationView title doesn't appear when the views are in TabView in SwiftUI
[英]SwiftUI TabView and NavigationView Mixed - Pop To Root doesn't work
似乎很明顯,當我同時使用 TabView 和 NavigationView - Pop To Root 不起作用。 這是我實現的兩個測試代碼。 一種同時具有 tabView 和 NavigationView,一種僅具有 Navigation View。
import SwiftUI
class Views: ObservableObject {
@Published var stacked = false
}
struct ContentView: View {
@ObservedObject var views = Views()
@State var selection: Int = 0
var body: some View {
NavigationView {
TabView(selection: $selection) {
ContentView2()
}
}
.environmentObject(views)
}
}
struct ContentView2: View {
@EnvironmentObject var views: Views
var body: some View {
NavigationLink(destination: ContentView3(), isActive: $views.stacked) {
Text("Go to View 2")
}
.isDetailLink(false)
}
}
struct ContentView3: View {
@EnvironmentObject var views: Views
var body: some View {
VStack {
Button("Pop to root") {
self.views.stacked = false
}
}
.navigationBarTitle("View 3")
}
}
TabView
括號,它就可以像魅力一樣工作...... 當我嘗試在 tabview 中彈出到 root 時,顯示一條日志Trying to pop to a missing destination at /Library/Caches/com.apple.xbs/Sources/Monoceros/Monoceros-120/Shared/NavigationBridge_PhoneTV.swift:341
有沒有人找到辦法頂 TabView 和 NavigationView,並實現 pop To Root?
試試這個:
import SwiftUI
struct ContentView: View {
@State var isActive : Bool = false
var body: some View {
NavigationView {
NavigationLink(
destination: ContentView2(rootIsActive: self.$isActive),
isActive: self.$isActive
) {
Text("Hello, World!")
}
.isDetailLink(false)
.navigationBarTitle("Root")
}
}
}
struct ContentView2: View {
@Binding var rootIsActive : Bool
var body: some View {
NavigationLink(destination: ContentView3(rootIsActive: self.$rootIsActive)) {
Text("Hello, World #2!")
}
.isDetailLink(false)
.navigationBarTitle("Two")
}
}
struct ContentView3: View {
@Binding var rootIsActive : Bool
var body: some View {
NavigationLink(destination: ContentView4(shouldPopToRootView: self.$rootIsActive)) {
Text("Hello, World #3!")
}
.isDetailLink(false)
.navigationBarTitle("Three")
}
}
struct ContentView4: View {
@Binding var shouldPopToRootView : Bool
var body: some View {
VStack {
Text("Hello, World #4!")
Button (action: { self.shouldPopToRootView = false } ){
Text("Pop to root")
}
}.navigationBarTitle("Four")
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.