首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SwiftUI中的可选状态或绑定

SwiftUI中的可选状态或绑定
EN

Stack Overflow用户
提问于 2021-04-02 08:21:12
回答 1查看 2.9K关注 0票数 3

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

为什么如果我使用带有可选类型的@State var some: SomeType?,然后使用@Binding var some: SomeType,这个操作符只检测到更改,它会从某个SomeType值更改为零,反之亦然。但是,对基础对象值的更改不会被检测为更改。

例如。@Binging进步: Int?

将进度从零更改为100将检测到变化,但如果我从1 -> 2 -> 3中更改值,则跳过它们,如果使用@Binding var progress: Int则有效。

知道如何在onChange()中使用选项词吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-02 09:21:59

下面是带有状态和约束力的可选示例:

代码语言:javascript
复制
import SwiftUI

struct ContentView: View {
    
    @State private var progress: Int?
    
    var body: some View {
        
        CustomView(progress: $progress)
        
    }
}

代码语言:javascript
复制
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) }
            
        }

    }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66916454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档