Ios 我';我正在构建导致.navigationTitle不出现的SwiftUI项目?
我的SwiftUI项目在某一点后拒绝显示导航标题。我使用的是一种导航结构,在我所见过的任何示例项目上都没有实现过,但它对我来说是有意义的,到目前为止似乎一直在工作。我的怀疑是,由于我使用的是不同的导航结构,这是问题的一部分。Ios 我';我正在构建导致.navigationTitle不出现的SwiftUI项目?,ios,swift,swiftui,swiftui-navigationview,Ios,Swift,Swiftui,Swiftui Navigationview,我的SwiftUI项目在某一点后拒绝显示导航标题。我使用的是一种导航结构,在我所见过的任何示例项目上都没有实现过,但它对我来说是有意义的,到目前为止似乎一直在工作。我的怀疑是,由于我使用的是不同的导航结构,这是问题的一部分。.navigationBar在每页上都有,但标题不显示 我在堆栈溢出和其他方面尝试了许多解决方案。我在下面列出的每一页上都尝试了.navigationBarHidden(false)、.navigationBarTitle()和.navigationBarBackButto
.navigationBar
在每页上都有,但标题不显示
我在堆栈溢出和其他方面尝试了许多解决方案。我在下面列出的每一页上都尝试了.navigationBarHidden(false)
、.navigationBarTitle()
和.navigationBarBackButtonHidden(true)
的组合,没有任何更改。我还尝试了我能想到的每个位置来放置这些.navigationBar
修改器的组合
最近,我发现了.toolbar
,这也没什么变化。我的怀疑是(如下面的代码片段所示),由于NavigationView
位于第一个视图(WelcomeUI.swift),我无法将.navigationBarTitle
放在代码的更深处
下面是我当前的导航结构,以及每个文件中的代码位:
欢迎光临
struct WelcomeUI: View {
var body: some View {
NavigationView {
VStack {
//NavigationLink(destination: SignupUI(), label: {
//Text("Sign Up")
//}
NavigationLink(destination: LoginUI(), label: {
Text("Log In")
}
}
}
}
}
斯威夫特酒店
struct LoginUI: View {
var body: some View {
VStack {
NavigationLink(destination: MainUI(), label: { Text("Log In") })
//Button(action: { ... }
}
.navigationBarHidden(false)
}
}
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)
}
}
注意:SignupUI.swift本质上与LoginUI.swift相同
struct LoginUI: View {
var body: some View {
VStack {
NavigationLink(destination: MainUI(), label: { Text("Log In") })
//Button(action: { ... }
}
.navigationBarHidden(false)
}
}
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)
}
}
迈努伊·斯威夫特
struct LoginUI: View {
var body: some View {
VStack {
NavigationLink(destination: MainUI(), label: { Text("Log In") })
//Button(action: { ... }
}
.navigationBarHidden(false)
}
}
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中的所有视图结构相同
设置视图
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工作正常。查看
MainUI
导航标题。我只是在每个视图中添加一个标题来查找发生了什么
import SwiftUI
struct SubSpendingView: View {
var body: some View {
ScrollView{
Text("SubSpendingView")
}.navigationBarTitle("SubSpending"
//, displayMode: .inline
)
}
}
struct SpendingView: View {
var body: some View {
ScrollView{
Text("SpendingView")
NavigationLink("subSpending", destination: SubSpendingView())
}.padding()
}
}
struct WelcomeUI: View {
var body: some View {
NavigationView {
VStack {
//NavigationLink(destination: SignupUI(), label: {
//Text("Sign Up")
//}
NavigationLink(destination: LoginUI(), label: {
Text("Go to Log In")
})
}.navigationTitle(Text("WelcomeUI"))
}
}
}
struct SettingsView: View {
var body: some View {
VStack{
ZStack {
Form {
Section(header: Text("Section Header")) {
NavigationLink(destination: WelcomeUI()) {
Text("Setting Option")
}
}
Section {
//Button("Log Out") {
//self.logout()
//}
Text("Log Out")
}
}
Button("say-high", action: {print("Hi")})
// This has no effect on code no matter where it is place in SettingsView.swift
}
}//.navigationBarTitle("Settings")
}
}
struct LoginUI: View {
var body: some View {
VStack {
NavigationLink(destination: MainUI(), label: { Text("Log In") })
//Button(action: { ... }
}.navigationTitle(Text("LoginUI"))
.navigationBarHidden(false)
}
}
struct MainUI: View {
@State var selectedTab: Views = .adding
var body: some View {
TabView(selection: $selectedTab) {
SpendingView()
.tabItem {
Image(systemName: "bag.circle")
Text("Spending")
}.tag(Views.spending)
//SavingView()
//.tabItem {
//Image(...)
//Text("Saving")
//}
Text("Adding View")
.tabItem {
Image(systemName: "plus")
Text("Add")
}.tag(Views.adding)
Text("Edit View")
.tabItem {
Image(systemName: "pencil")
Text("Edit")
}.tag(Views.edit)
SettingsView()
.tabItem {
Image(systemName: "gear")
Text("Settings")
}.tag(Views.settings)
}
//This overrides the navigationTitle in the tabs
.navigationBarTitle(Text(selectedTab.rawValue)
//, displayMode: .inline
)
.navigationBarBackButtonHidden(true)
}
}
enum Views: String{
case settings = "Settings"
case spending = "Spending"
case adding = "Add"
case edit = "Edit"
}
struct PaddyNav: View {
var body: some View {
WelcomeUI()
//Wont work
.navigationTitle(Text("PaddyNav"))
}
}
struct PaddyNav_Previews: PreviewProvider {
static var previews: some View {
PaddyNav()
}
}
空白空间可以是<代码>导航视图>代码>查找>代码>。工具栏< /代码>将标题放在里面或其他东西。此外,如果您有最小的可复制代码,这将是最好的。如果我们中的任何人复制并粘贴,我们可以立即在我的画布或模拟器中看到。没有未提供的句点、星号、视图
s。感谢@loremipsum提供的提示。我查看了.toolbar
,也没有任何变化。我有更多关于问题的信息,并将相应地更新帖子。这是一个很好的开始!我已经对每个视图进行了您建议的更改。但是,它仅对在MainUI.swift
中的@State var selectedTab
下选择的任何视图起作用。正如我所说,我为每个视图添加了枚举,并在MainUI.swift
中标记了每个视图。在每个非所选选项卡的视图中,它都会显示导航标题
,但即使向下滚动也会保持静止。您是否有一个适用于所有视图的解决方案?它保持静止?添加一些代码或照片。目前我在@State var selectedTab:Views=”中选择了AddView()
。添加以及MainUI
中相应的枚举添加和标记。我不知道你说的静止是什么意思。您想要它.inline
?当我向下滚动视图时,标题应该从.large
变为.inline
,唯一可以这样做的是在selectedTab
中选择的任何视图。您还将在第二张照片中注意到,导航栏
是透明的,标题没有变成.inline
。