如何解决自定义属性包装器无法准确反映SwiftUI中我的TextField的状态,为什么?
我已经创建了一个属性包装器,我想在其中插入一些逻辑,并且“ 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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。