Swift 为什么在视图不为';不要更新
我对Swift 为什么在视图不为';不要更新,swift,swiftui,Swift,Swiftui,我对@State变量的理解是,只要视图中的状态发生变化,我们就需要使用@State变量。但是,请考虑下面的例子: struct ContentView: View { @State private var image: Image? var body: some View { VStack { image? .resizable() .scaledToFit()
@State
变量的理解是,只要视图中的状态发生变化,我们就需要使用@State
变量。但是,请考虑下面的例子:
struct ContentView: View {
@State private var image: Image?
var body: some View {
VStack {
image?
.resizable()
.scaledToFit()
}
.onAppear(perform: loadImage)
}
func loadImage() {
image = Image("Example.png")
}
}
就我有限的知识而言,我不会凭借切换开关或按钮等更改任何视图
。那么为什么要使用@State
变量呢?为什么我们不能直接写:private-var-image:image?
VStack将包含一个EmptyView()
,如果映像为nil。从这个意义上说,你的观点改变了
想想看:在调用loadImage
之前,图像为零,视图已经初始化 我很抱歉问了一些基本的问题,我只是无法将我的知识应用到这个环境中,我没有遇到可选的观点,所以这让我很困惑。a) 当我们说@State private var image:image?
,从SwiftUI视图
的角度来看,这到底意味着什么?b) VStack
中的image?
是什么意思?如果它不存在,它从哪里来?Image?
是可选的图像,可能是nil
。在您的代码中,它在image=image(“Example.png”)
行之前不存在。由于该行不是在结构初始化时调用的,而是稍后(在onAppear
),您将更改结构,因此需要@State
:)np。如果您不介意,请选择它作为正确答案;)