【发布时间】:2020-05-23 12:02:18
【问题描述】:
我注意到 SwiftUI 在添加 sheetmodifier 时会完全刷新视图。
假设我有一个显示随机数的视图。我希望这个值是独立的并且不连接到工作表逻辑(每次我打开/关闭工作表时都不会改变),但是每次显示/关闭工作表的文本都在变化。
它应该这样工作吗?
@Sate的主要观点是只更新连接的视图而不是所有堆栈,我错了吗?
在呈现模式时,如何防止我的视图自行刷新?
struct ContentView: View {
@State var active = false
var body: some View {
VStack {
Text("Random text: \(Int.random(in: 0...100))")
Button(action: { self.active.toggle() }) {
Text("Show pop up")
}
}
.sheet(isPresented: $active) {
Text("POP UP")
}
}
}
附: ContentView 仅调用 onAppear()/onDisappear() 和 init()。
【问题讨论】:
-
是的,这是预期的行为。
View是结构体,值类型,如果它的任何部分改变了,那么整个值就改变了。 -
@Asperi,我是否理解正确,如果它的任何部分发生了变化,那么整个值都会发生变化 仅因为
@State属性而起作用。它与经典(不是 SwiftUI)swift 无关