gpt4 book ai didi

ios - 使用 SwiftUI 从结构中的完成变量调用方法

转载 作者:行者123 更新时间:2023-12-01 19:31:32 25 4
gpt4 key购买 nike

我正在使用 SwiftUI。我有一个 viewModel 的全局变量有一个完成。我正在尝试找到一种方法来调用此类中的方法来增加 Action 的香味。

struct ContentView: View {

let viewModel = TimerViewModel(totalTime: 15, finished: {
print("I need it to call a method here")
})
我试过让它可选然后在init中设置它但仍然得到这个错误:

Escaping closure captures mutating 'self' parameter


我希望你能帮忙。

最佳答案

由于您尝试修改 ContentView,您收到错误消息。从TimerViewModel 内部.
调用完成方法的替代方法是创建 @Published TimerViewModel 中的属性(property):

class TimerViewModel: ObservableObject {
@Published var finished = false // it can be Bool or anything you want to pass to your View

func end() {
finished = true
}
}
并在 View 中捕获其变化:
struct ContentView: View {
@ObservedObject var viewModel = TimerViewModel()

var body: some View {
VStack {
Text("Text")
}
.onReceive(viewModel.$finished) { finished in
if finished {
// timer has finished, you can call some method now
}
}
}
}

关于ios - 使用 SwiftUI 从结构中的完成变量调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62504286/

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