问题描述
我已经创建了一个属性包装器,我想在其中插入一些逻辑,并且“ set”值在做正确的事情,但是文本字段并没有使用所有大写文本进行更新。文本字段不应该显示所有大写文本,还是我误解了它的工作原理?
这也是一个人为的例子,我的最终目标是在属性包装器中插入更多的逻辑,我只是使用大写的例子来使其工作。我已经在整个互联网上进行搜索,但是找不到可行的解决方案。
Y position
解决方法
SwiftUI监视@Published
或@StateObject
中的@ObservedObject
个属性,并根据其更改触发UI更新。
但是它并不深入ObservableObject
内部。您的FormDataViewModel
没有任何@Published
属性。
您可以做的一件事就是模拟@Published
对值变化的作用。
class FormDataViewModel: ObservableObject {
@Capitalized var name: String = ""
private var nameObserver: AnyCancellable?
init() {
nameObserver = _name.$value.sink {_ in
self.objectWillChange.send()
}
}
}
请尝试。
,这可以通过看起来更简单,更可靠的标准T
完成。
这是一个解决方案。在Xcode 12 / iOS 14上进行了测试。
@Published