SwiftUI-排除第二个模式工作表不工作

SwiftUI-排除第二个模式工作表不工作,swiftui,Swiftui,我的应用程序在模式表中显示项目详细信息。用户可以在此模式工作表中打开编辑模式。因此,我使用.sheet(item){}根据模态类型(detail或edit)来表示模态。除了两件事外,一切正常: 问题1。模态在状态转换之间短暂消失 在编辑模式(示例中为红色背景)时,我会短暂地看到编辑控件,然后模式消失,最后编辑屏幕显示在模式中。为什么模态在状态之间消失?下面是一个慢下来的动画: 问题2。无法以编程方式关闭第二个模态 当我处于编辑模式时,我无法以编程方式关闭它。然而,同样的代码在细节上起作用 下面

我的应用程序在模式表中显示项目详细信息。用户可以在此模式工作表中打开编辑模式。因此,我使用
.sheet(item){}
根据模态类型(detail或edit)来表示模态。除了两件事外,一切正常:

问题1。模态在状态转换之间短暂消失 在编辑模式(示例中为红色背景)时,我会短暂地看到编辑控件,然后模式消失,最后编辑屏幕显示在模式中。为什么模态在状态之间消失?下面是一个慢下来的动画:

问题2。无法以编程方式关闭第二个模态 当我处于编辑模式时,我无法以编程方式关闭它。然而,同样的代码在细节上起作用

下面是代码的摘录部分:

struct ContentView:View{
@状态变量modalType:modalType?
var body:一些观点{
按钮(“显示详细信息”){
self.modalType=.details
}
.sheet(项目:$modalType){输入
self.modal(用于:类型)
}
}
私有函数模式(对于类型:ModalType)->AnyView{
开关类型{
案件详情:
返回任意视图(
VStack(间距:30){
文本(“详细信息”).font(.largeTitle)
按钮(“编辑”){self.modalType=.Edit}
按钮(“关闭”){self.modalType=nil}//此操作有效
}
)
案例.编辑:
返回任意视图(
VStack(间距:30){
文本(“编辑”).font(.largeTitle)
按钮(“关闭”){self.modalType=nil}//如果从“详细信息”打开,则此按钮不起作用
}
.frame(最小宽度:0,最大宽度:。无穷大,最小高度:0,最大高度:。无穷大)
.背景(颜色.红色)
)
}
}
}
枚举ModalType:字符串、可等式、可识别{
案例详情=“详情”
case edit=“编辑”
变量id:String{
返回原始值
}
}
另外,我使用的是xCode 11.5