gpt4 book ai didi

ios - SwiftUI:ViewModifier 不监听 onReceive 事件

转载 作者:行者123 更新时间:2023-12-01 15:54:33 25 4
gpt4 key购买 nike

我有一个自定义 ViewModifier它只是返回带有 onReceive 的相同内容修饰符,onReceive没有触发,这里有一个示例代码,您可以在XCode中复制、粘贴和运行:

import SwiftUI
import Combine

class MyViewModel: ObservableObject {
@Published var myProperty: Bool = false
}
struct ContentView: View {
@ObservedObject var viewModel: MyViewModel

var body: some View {
Text("Hello, World!")
.modifier(MyOnReceive(viewModel: viewModel))
.onTapGesture {
self.viewModel.myProperty = true
}
}
}

struct MyOnReceive: ViewModifier {
@ObservedObject var viewModel: MyViewModel

func body(content: Content) -> some View {
content
.onReceive(viewModel.$myProperty) { theValue in
print("The Value is \(theValue)") // <--- this is not executed
}
}
}

SwiftUI旨在禁止 onReceiveViewModifier 内执行或者它是一个错误?我在现实生活中的项目中有一个 View ,该 View 通过放入一些业务逻辑而变得更大 onReceive ,所以我需要通过将其与 onReceive 分开来清理该 View .

最佳答案

好的,这对我有用:

func body(content: Content) -> some View {
content
.onAppear() // <--- this makes it work
.onReceive(viewModel.$myProperty) { theValue in
print("-----> The Value is \(theValue)") // <--- this will be executed
}
}

关于ios - SwiftUI:ViewModifier 不监听 onReceive 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61190398/

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