ios - Swift - didSet 属性未从绑定(bind)更改中调用

标签 ios swift swiftui

我的问题:

我想在单击自定义 View 时调用函数

因此,我使用 @State 变量从自定义 View 中观察单击操作。但问题是我的值改变了但didSet函数没有触发

我的代码:

主要结构:

   @State var buttonClicked : Bool = false {
        didSet{
          needToCallMyFunction() // not triggered 
        }
    }

自定义结构:(对于我的自定义 View )

@Binding var isClicked : Bool

someview
.onTapGesture(perform: {
            print("custom clicked")
            isClicked.toggle()
        })

最佳答案

在主视图中使用 .onChange(of:) 修饰符,例如

  SomeView()
    .onChange(of: buttonClicked) { _ in
       self.needToCallMyFunction()
    }

更新:SwiftUI 1.0/iOS 13+ 的变体

import Combine   // needed to use Just

...

  SomeView()
    .onReceive(Just(buttonClicked)) { _ in
       self.needToCallMyFunction()
    }

关于ios - Swift - didSet 属性未从绑定(bind)更改中调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65389566/

相关文章:

ios - 使多个 ScrollView 响应一个取消滚动行为

ios - 验证 iOS 应用程序上传的警告和错误

ios - 如何使用 SwiftUI 打开通知操作的自定义 View ?

ios - 如何在 NavigationLink 中为目标 View 重用 View 模型实例

ios - 使用 SKPaymentTransactionObserver 打开 View 后,应用程序不断询问 Apple ID

ios - 如何正确地从一个字符串中取出一个字符串?

swift - UIAlert 问题

ios - 如何将事件发送到我的(子)UIView?

Swift 使用闭包初始化结构

ios - SwiftUI:路径的坐标空间