请看下面的代码。使用该代码我可以看到工具栏项没有任何问题。但如果我删除或替换navigationView与例如一个VSack的工具栏项消失。
是否可以在没有navigationView/navigationStack的情况下添加工具栏项?我对这种可能性特别感兴趣,因为它可以解决我在多个相互连接的视图中使用多个navigationView的问题。
工作代码:
import SwiftUI
struct Restaurant: Identifiable {
let id = UUID()
let name: String
}
// A view that shows the data for one Restaurant.
struct RestaurantRow: View {
var restaurant: Restaurant
var body: some View {
Text("Come and eat at \(restaurant.name)")
}
}
// Create three restaurants, then show them in a list.
struct SwiftUIView: View {
let restaurants = [
Restaurant(name: "Joe's Original"),
Restaurant(name: "The Real Joe's Original"),
Restaurant(name: "Original Joe's")
]
var body: some View {
NavigationStack {
List(restaurants) { restaurant in
RestaurantRow(restaurant: restaurant)
}
.toolbar {
ToolbarItem(placement: .automatic) {
Text("Great Toolbar")
}
}
}
}
}
struct SwiftUIView_Previews: PreviewProvider {
static var previews: some View {
SwiftUIView()
}
}
不显示工具栏项的代码:
var body: some View {
VStack {
List(restaurants) { restaurant in
RestaurantRow(restaurant: restaurant)
}
.toolbar {
ToolbarItem(placement: .automatic) {
Text("Great Toolbar")
}
}
}
}
}
删除了navigationView,将其替换为其他内容,如VStack。
1条答案
按热度按时间svmlkihl1#
在iOS(和iPadOS)上,
toolbar
修饰符需要一个封闭的NavigationView
或NavigationStack
。然而,正如我在回答other question时解释的,您只需要一个封闭的NavigationView
。toolbar
修饰符将向上搜索视图层次结构以找到它。注意,如果你在工作表中显示一个视图,你需要在工作表中有一个
NavigationView
,工作表有自己的视图层次结构,独立于显示工作表的视图。