gpt4 book ai didi

swiftui - 如何将@FocusState 与 View 模型一起使用?

转载 作者:行者123 更新时间:2023-12-05 01:26:41 30 4
gpt4 key购买 nike

我正在为我的 SwiftUI 应用程序使用 View 模型,并且希望在 View 模型中也有焦点状态,因为表单非常复杂。

这个在 View 中使用@FocusState 的实现按预期工作,但不是我想要的:

import Combine
import SwiftUI

struct ContentView: View {
@ObservedObject private var viewModel = ViewModel()
@FocusState private var hasFocus: Bool

var body: some View {
Form {
TextField("Text", text: $viewModel.textField)
.focused($hasFocus)
Button("Set Focus") {
hasFocus = true
}
}
}
}

class ViewModel: ObservableObject {
@Published var textField: String = ""
}

如何将@FocusState 放入 View 模型中?

最佳答案

假设您在 ViewModel 中也有

class ViewModel: ObservableObject {
@Published var hasFocus: Bool = false

...
}

你可以这样使用它

struct ContentView: View {
@ObservedObject private var viewModel = ViewModel()
@FocusState private var hasFocus: Bool

var body: some View {
Form {
TextField("Text", text: $viewModel.textField)
.focused($hasFocus)
}
.onChange(of: hasFocus) {
viewModel.hasFocus = $0 // << write !!
}
.onAppear {
self.hasFocus = viewModel.hasFocus // << read !!
}
}
}

如果需要的话,还有 Button 中的相同内容。

关于swiftui - 如何将@FocusState 与 View 模型一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70133763/

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