【发布时间】:2019-10-24 07:45:48
【问题描述】:
由于 SwiftUI 是声明式的,因此没有 dismiss 方法。
如何向DetailView 添加关闭/关闭按钮?
struct DetailView: View {
var body: some View {
Text("Detail")
}
}
struct ContentView : View {
var body: some View {
PresentationButton(Text("Click to show"), destination: DetailView())
}
}
【问题讨论】:
-
我所见过的示例都没有关闭呈现视图的方法,所以我认为还没有。
-
我很确定他们会在下一个 beta 版本中引入它。 Pop 方法也不见了。
-
我认为记住 SwiftUI 是一种范式转变很重要。我们必须更多地考虑“状态”,而不是写出条件语句等。因此,正如其他人所写的,更多的是通过
@Environment或@State或其他“属性包装器”来监听状态。 "对于那些喜欢复杂短语的人来说,这是向声明式框架中的观察者模式的转变:-) -
现在在 Beta 5 中有一种非常简洁的方法来执行此操作。请参阅下面的答案。顺便说一句,同样的方法适用于弹出导航视图。
-
看起来他们在 iOS 15 中引入了你想要的——DismissAction。见this answer。
标签: swift modal-dialog swiftui