我不知道这是一个错误还是我在这里做错了什么。我在导航栏上添加了一个新按钮,它将呈现一个新视图。
struct MyView: View {
@ObservedObject var viewModel = MyViewModel()
var body: some View {
List(viewModel.data, id: \.name) { data in
NavigationLink(destination: MyDetailView(data: data.name)) {
Text(data.name)
}
}
.listStyle(InsetGroupedListStyle())
.edgesIgnoringSafeArea(.all)
.toolbar {
ToolbarItem(placement: .navigationBarTrailing) {
NavigationLink(destination: MyDetailView()) {
Text("New Element")
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这正在最新的 iOS 14 beta (beta 6) 和 Xcode 12 (beta 6) 上进行测试。据我所知,导航链接在列表中可以很好地呈现新视图,但在工具栏中,如图所示,情况并非如此。工具栏上的按钮可见且处于活动状态,但不会触发显示新视图。
Asp*_*eri 16
NavigationLink应该在里面 NavigationView。工具栏不在NavigationView,把按钮放在里面。
所以假设你在父母的某个地方
NavigationView {
MyView()
}
Run Code Online (Sandbox Code Playgroud)
这是一个解决方案:
struct MyView: View {
@ObservedObject var viewModel = MyViewModel()
@State private var showNew = false
var body: some View {
List(viewModel.data, id: \.name) { data in
NavigationLink(destination: MyDetailView(data: data.name)) {
Text(data.name)
}
}
.listStyle(InsetGroupedListStyle())
.background(
NavigationLink(destination: MyDetailView(), isActive: $showNew) {
EmptyView()
}
)
.edgesIgnoringSafeArea(.all)
.toolbar {
ToolbarItem(placement: .navigationBarTrailing) {
Button("New Element") {
self.showNew = true
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
小智 14
我发现使用带有空文本的 HStack 作为第一个元素也可以工作,它可以让 navigationLink 正确运行。
.toolbar {
ToolbarItem(placement: .navigationBarLeading) {
HStack {
Text("")
NavigationLink(destination: SettingsView()) {
Image(systemName: "gear")
.font(.title)
}
}
}
Run Code Online (Sandbox Code Playgroud)