進入中級開發階段,咱們以前不少土辦法就很難生效了。這時咱們就應該補充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函數