进入中级开发阶段,我们之前很多土办法就很难生效了。这时我们就应该补充SwiftUI语言的中高级知识了。
如何在View中初始化
我们直接添加init函数即可
struct StateFromOutside: View {
let list = [
"a": "Letter A",
"b": "Letter B",
// ...
]
@State var fullText: String = ""
init(letter: String) {
self.fullText = list[letter]!
}
var body: some View {
TextField($fullText)
}
}
但是请注意,上面的代码是无法生效的。因为您破坏了State协议了。解决方法很简单,重新初始化State吧。
@State var fullText: String // No default value of ""
init(letter: String) {
_fullText = State(initialValue: list[letter]!)
}
参考文档
SwiftUI @State var initialization issue
更多SwiftUI教程和代码关注专栏
- 请关注我的专栏icloudend, SwiftUI教程与源码
https://www.jianshu.com/c/7b3e3b671970