我正在SwiftUI使用Apple的官方教程进行学习:https:
//developer.apple.com/tutorials/swiftui/building-lists-and-navigation
一切工作正常,直到我尝试NavigationView通过调用在上显示导航标题.navigationBarTitle。
我试图刷新实时视图,重新启动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
Run Code Online (Sandbox Code Playgroud)
Xcode看起来像这样:

根据教程,它应该显示导航标题,但就我而言不显示。
知道为什么吗?谢谢!
vac*_*ama 37
.navigationBarTitle()和.navigationBarItem()是的修饰符,位于的View内部,而NavigationView不是其NavigationView本身:
struct LandmarkList: View {
var body: some View {
NavigationView {
List(landmarkData) { landmark in
LandmarkRow(landmark: landmark)
}
.navigationBarItem(title: Text("Done"))
.navigationBarTitle(Text("Landmarks"))
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果您考虑一下,这是有道理的。由于View该内NavigationView改变,新View使然导航栏的标题和内容应该是什么。
NavigationView只是一些内容的容器。当您从一页导航到另一页时,内容会发生变化,但NavigationView仍然存在。
关键是当它显示NavigationView每个view的内容时显示它。所以它将与目的地一起封装。
最后,你要添加的所有导航修饰导航里面(的内容)
struct Content: View {
var body: some View {
Text("Some. content")
.navigationBarItem(title: Text("Done"))
.navigationBarTitle(Text("Landmarks"))
}
}
Run Code Online (Sandbox Code Playgroud)
struct Parent: View {
var body: some View {
NavigationView {
Content() // This contains navigation modifiers inside the view itself
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2031 次 |
| 最近记录: |