进入中级开发阶段,咱们以前不少土办法就很难生效了。这时咱们就应该补充SwiftUI语言的中高级知识了。
咱们直接添加init函数便可swift
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吧。ide
@State var fullText: String // No default value of "" init(letter: String) { _fullText = State(initialValue: list[letter]!) }
SwiftUI @State var initialization issue函数