SwiftUI 中級之View如何init而且解決不生效問題(2020年教程)

進入中級開發階段,咱們以前不少土辦法就很難生效了。這時咱們就應該補充SwiftUI語言的中高級知識了。

如何在View中初始化

咱們直接添加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函數

更多SwiftUI教程和代碼關注專欄

https://www.jianshu.com/c/7b3...ui

相關文章
相關標籤/搜索