为什么使用 SwiftUI 不显示导航标题?
Why The Navigation Title doesn't show up using SwiftUI?
我正在学习SwiftUI
使用苹果官方教程:
https://developer.apple.com/tutorials/swiftui/building-lists-and-navigation
一切正常,直到我尝试通过调用 .navigationBarTitle
在 NavigationView
上显示导航标题。
我试过刷新实时取景,重启Xcode,还是没有显示。
这是我的代码:
import SwiftUI
struct LandmarkList : View {
var body: some View {
NavigationView {
List(landmarkData) { landmark in
LandmarkRow(landmark: landmark)
}
}
.navigationBarItem(title: Text("Done"))
.navigationBarTitle(Text("Landmarks"))
}
}
#if DEBUG
struct LandmarkList_Previews : PreviewProvider {
static var previews: some View {
LandmarkList()
}
}
#endif
Xcode 看起来像这样:
根据教程,它应该显示导航标题,但在我的例子中没有。
知道为什么吗?谢谢!
.navigationBarTitle()
和 .navigationBarItem()
是 NavigationView
内部 View
的修饰符,而不是 NavigationView
本身:
struct LandmarkList: View {
var body: some View {
NavigationView {
List(landmarkData) { landmark in
LandmarkRow(landmark: landmark)
}
.navigationBarItem(title: Text("Done"))
.navigationBarTitle(Text("Landmarks"))
}
}
}
如果你仔细想想,这是有道理的。随着 NavigationView
中的 View
发生变化,新的 View
规定了导航栏的标题和内容。
描述:
NavigationView
只是一些内容的容器。当您从一个页面导航到另一个页面时,内容会发生变化,但 NavigationView
仍然存在。
重点是 NavigationView
在显示每个 view
的内容时显示它。所以它会封装目的地。
最后,您应该在导航中添加所有导航修饰符(在内容上)
示例:
struct Content: View {
var body: some View {
Text("Some. content")
.navigationBarItem(title: Text("Done"))
.navigationBarTitle(Text("Landmarks"))
}
}
struct Parent: View {
var body: some View {
NavigationView {
Content() // This contains navigation modifiers inside the view itself
}
}
}
我正在学习SwiftUI
使用苹果官方教程:
https://developer.apple.com/tutorials/swiftui/building-lists-and-navigation
一切正常,直到我尝试通过调用 .navigationBarTitle
在 NavigationView
上显示导航标题。
我试过刷新实时取景,重启Xcode,还是没有显示。
这是我的代码:
import SwiftUI
struct LandmarkList : View {
var body: some View {
NavigationView {
List(landmarkData) { landmark in
LandmarkRow(landmark: landmark)
}
}
.navigationBarItem(title: Text("Done"))
.navigationBarTitle(Text("Landmarks"))
}
}
#if DEBUG
struct LandmarkList_Previews : PreviewProvider {
static var previews: some View {
LandmarkList()
}
}
#endif
Xcode 看起来像这样:
根据教程,它应该显示导航标题,但在我的例子中没有。
知道为什么吗?谢谢!
.navigationBarTitle()
和 .navigationBarItem()
是 NavigationView
内部 View
的修饰符,而不是 NavigationView
本身:
struct LandmarkList: View {
var body: some View {
NavigationView {
List(landmarkData) { landmark in
LandmarkRow(landmark: landmark)
}
.navigationBarItem(title: Text("Done"))
.navigationBarTitle(Text("Landmarks"))
}
}
}
如果你仔细想想,这是有道理的。随着 NavigationView
中的 View
发生变化,新的 View
规定了导航栏的标题和内容。
描述:
NavigationView
只是一些内容的容器。当您从一个页面导航到另一个页面时,内容会发生变化,但 NavigationView
仍然存在。
重点是 NavigationView
在显示每个 view
的内容时显示它。所以它会封装目的地。
最后,您应该在导航中添加所有导航修饰符(在内容上)
示例:
struct Content: View {
var body: some View {
Text("Some. content")
.navigationBarItem(title: Text("Done"))
.navigationBarTitle(Text("Landmarks"))
}
}
struct Parent: View {
var body: some View {
NavigationView {
Content() // This contains navigation modifiers inside the view itself
}
}
}