我正在处理SwiftUI视图。在TabView内使用NavigationView时,该应用程序将按预期运行。
struct ContentView: View {
var body: some View {
TabView {
NavigationView {
Text("A")
.navigationBarTitle("Nav A")
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
NavigationView {
Text("B")
.navigationBarTitle("Nav B")
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
}
//.tabViewStyle(PageTabViewStyle(indexDisplayMode: .never)) // this line breaks the view
}
}
我取消注释.tabViewStyle(...)
后,该视图将无法正常工作。有什么想法吗?该文本不再可见。导航似乎也不正确。
答案 0 :(得分:1)
尝试将NavigationView
移到TabView
之外:
struct ContentView: View {
@State var selection = 1
var body: some View {
NavigationView {
TabView(selection: $selection) {
Text("A").tag(1)
Text("B").tag(2)
}
.tabViewStyle(PageTabViewStyle(indexDisplayMode: .never))
.navigationTitle(selection == 1 ? "A" : "B")
}
}
}
答案 1 :(得分:0)
似乎NavigationView
默认显示为主要/详细信息显示。
您可以使用修饰符.navigationViewStyle(StackNavigationViewStyle())
强制其像普通导航堆栈一样工作
在您的代码中:
struct ContentView: View {
var body: some View {
TabView {
NavigationView {
Text("A")
.navigationBarTitle("Nav A")
}
.navigationViewStyle(StackNavigationViewStyle())
.frame(maxWidth: .infinity, maxHeight: .infinity)
NavigationView {
Text("B")
.navigationBarTitle("Nav B")
}
.navigationViewStyle(StackNavigationViewStyle())
.frame(maxWidth: .infinity, maxHeight: .infinity)
}
.tabViewStyle(PageTabViewStyle(indexDisplayMode: .never))
}
}