swift - 如果取消滑动返回上一屏的过程,navigationBar保持不变
问题描述
使用navigationBarItems从View中滑动,取消滑动返回上一屏时,上一屏的navigationBar保持不变,没有消失。
这是一个错误吗?
还是我的实施错误?
您可以在这里查看现象。
struct TopView: View {
var body: some View {
NavigationView {
VStack {
NavigationLink(destination: DetailView()) {
Text("Detail")
}
}
.navigationBarTitle("Top")
}
}
}
struct DetailView: View {
var body: some View {
VStack {
NavigationLink(destination: EditView()) {
Text("Edit")
}
}
.navigationBarTitle("Detail", displayMode: .inline)
}
}
struct EditView: View {
@Environment(\.presentationMode) private var presentationMode: Binding<PresentationMode>
var body: some View {
VStack {
Text("Title")
}
.navigationBarTitle("Edit", displayMode: .inline)
.navigationBarItems(
trailing:
Button(action: {
self.presentationMode.wrappedValue.dismiss()
}) {
Text("Save")
}
)
}
}
@Environment (.PresentationMode) 私有变量presentationMode:绑定
如果这不存在,就不会发生。
解决方案
这是修复
struct DetailView: View {
var body: some View {
VStack {
NavigationLink(destination: EditView()) {
Text("Edit")
}.isDetailLink(false) // << here !!
}
.navigationBarTitle("Detail", displayMode: .inline)
}
}
推荐阅读
- java - 无法从基于 Jersey 的 Web 应用程序中的 Spring Boot 的 application.properties 文件中读取任何值
- javascript - 提交按钮点击随机音频(JS)
- angular - 使用 Angular 和 Aedes 设置 MQTT 代理
- python - elasticsearch + python在字符串数组中搜索子字符串
- python - spyder5 无法查看数据框
- git - 为什么暂存命令 git read-tree
不管用 - ffmpeg - FFmpeg 时间戳
- wpf - WPF 自定义控件显示内容
- amazon-web-services - 用于动态路由的 AWS Edge 功能不起作用
- android - 我如何解释 simpleperf stat 产生的指令计数,同一线程上的记录不相同?