gpt4 book ai didi

swift - SwiftUI 中的可选状态或绑定(bind)

转载 作者:行者123 更新时间:2023-12-05 03:43:07 25 4
gpt4 key购买 nike

我想问一下关于 SwiftUI 行为的问题当我使用 .onChange( value) { }

为什么如果我使用带有可选类型的 @State var some: SomeType?然后 @Binding var some: SomeType 这个运算符只检测变化它有从一些 SomeType 值到 nil 的变化,反之亦然。但是底层对象值的变化不会被检测为变化

例如。 @Binging var progress: Int?

将进度从零更改为 100 检测更改但如果我将值从 1 -> 2 -> 3 更改,它们将被跳过如果我使用 @Binding var progress: Int

它会起作用

知道如何将 Optionals 与 onChange() 一起使用吗?

最佳答案

这是带有状态和绑定(bind)的可选工作示例:


import SwiftUI

struct ContentView: View {

@State private var progress: Int?

var body: some View {

CustomView(progress: $progress)

}
}

struct CustomView: View {

@Binding var progress: Int?

var body: some View {

Button("update") {

if let unwrappedInt = progress { progress = unwrappedInt + 1 }
else { progress = 0 } //<< █ █ Here: initializing! █ █

}
.onChange(of: progress) { newValue in

if let unwrappedInt = progress { print(unwrappedInt) }

}

}
}

关于swift - SwiftUI 中的可选状态或绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66916454/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com