【发布时间】:2020-02-20 08:10:22
【问题描述】:
我正在使用以下代码在 WatchOS 上生成情况
struct Modal : View {
@Binding var showingModal : Bool
init(showingModal : Binding<Bool>){
self._showingModal = showingModal
print("init modal")
}
var body: some View {
Button(action: {
self.showingModal.toggle()
}, label: {
Text("TTTT")
})
}
}
struct ContentView: View {
@State var showingModal = false
var body: some View {
Button(action: {
self.showingModal.toggle()
}, label: {
Text("AAAA")
}).sheet(isPresented: $showingModal, content: {Modal(showingModal: self.$showingModal)})
}
}
每次我在主视图中按下按钮以调用带有 .sheet 的模态时,都会创建模态视图的两个实例。
谁能解释一下这个现象?
【问题讨论】:
-
它似乎与动画正在进行时的过渡有关)。你有什么问题吗?不能保证任何时候都不会重新创建 View,即使在 iOS 或 macOS 上也是如此。只是不要担心,不要依赖 SwiftUI 的工作方式。状态相关的表示,这是唯一可以遵循的范式。