我正在使用Apple的官方教程学习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看起来像这样:
根据教程,它应该显示导航标题,但它没有在我的情况下。
知道为什么吗谢谢!
5条答案
按热度按时间qco9c6ql1#
.navigationBarTitle()
和.navigationBarItem()
是NavigationView
内部View
的修饰符,而不是NavigationView
本身:如果你仔细想想,这是有道理的当
NavigationView
中的View
发生更改时,新的View
将指定导航栏的标题和内容。qf9go6mv2#
说明:
NavigationView
只是一个内容的容器。当您从一个页面导航到另一个页面时,内容会发生变化,但NavigationView
仍然存在。关键是
NavigationView
在显示每个view
的内容时显示它。所以它会封装到目的地。最后,您应该在导航内添加所有导航修饰符(在内容上)
从️iOS 14+开始,您应该使用
ToolbarItem
而不是navigationBarItem
,如下所示示例:
ui7jx7zq3#
如果有人在寻找导航标题带标签按钮,这段代码可能会有帮助-
w46czmvw4#
如果你到达这里并使用
NavigationStack
(实际上NavigationView有一个警告,自iOS 16以来将不再使用),只需将.navigationTitle("My title")
修饰符放在NavigationStack
的内容上,而不是NavigationStack
本身。例如
56lgkhnf5#
.modifier(NavigationView())必须添加在.navigationBar* 修饰符之后,而不是之前