我的 SwiftUI 项目在某个点后拒绝显示导航标题。我使用的导航结构在我见过的任何示例项目中都没有实现,但它对我来说很有意义,并且到目前为止似乎一直有效。我的怀疑是,因为我使用的是不同的导航结构,所以它是问题的一部分。每一页都有,但标题.navigationBar
不显示。
我在 Stack Overflow 和其他方面尝试了许多解决方案。我在下面列出的每一页上都尝试了.navigationBarHidden(false)
,.navigationBarTitle()
和 的所有组合,没有任何变化。.navigationBarBackButtonHidden(true)
我还尝试了我能想到的每个位置来放置这些.navigationBar
修饰符组合。
最近,我发现.toolbar
,这也没有任何改变。我的怀疑是(如下面的代码片段所示),因为NavigationView
它在第一个视图(WelcomeUI.swift)中,我无法.navigationBarTitle
在代码中放置更深的内容。
以下是我当前的导航结构,以及每个文件中的一些代码:
WelcomeUI.swift
struct WelcomeUI: View {
var body: some View {
NavigationView {
VStack {
//NavigationLink(destination: SignupUI(), label: {
//Text("Sign Up")
//}
NavigationLink(destination: LoginUI(), label: {
Text("Log In")
}
}
}
}
}
LoginUI.swift
struct LoginUI: View {
var body: some View {
VStack {
NavigationLink(destination: MainUI(), label: { Text("Log In") })
//Button(action: { ... }
}
.navigationBarHidden(false)
}
}
注意:SignupUI.swift 本质上与 LoginUI.swift 相同
MainUI.swift
struct MainUI: View {
var body: some View {
TabView {
//SpendingView()
//.tabItem {
//Image(...)
//Text("Spending")
//}
//SavingView()
//.tabItem {
//Image(...)
//Text("Saving")
//}
//AddView()
//.tabItem {
//Image(...)
//Text("Add")
//}
//EditView()
//.tabItem {
//Image(...)
//Text("Edit")
//}
SettingsView()
.tabItem {
//Image(...)
Text("Settings")
}
}
.navigationBarBackButtonHidden(true)
}
}
注意:MainUI.swift 中的所有视图的结构都相同。
SettingsView.swift
struct SettingsView: View {
var body: some View {
ZStack {
Form {
Section(header: Text("Section Header")) {
NavigationLink(destination: WelcomeUI()) {
Text("Setting Option")
}
}
Section {
//Button("Log Out") {
//self.logout()
//}
Text("Log Out")
}
}
.navigationBarTitle("Settings") // This has no effect on code no matter where it is place in SettingsView.swift
}
}
}
我还应该注意,只有 MainUI.swift 之后的页面受此影响。WelcomeUI.swift 和 LoginUI.swift 按预期工作。