SwiftUI 中级之View如何init并且解决不生效问题(2020年教程)

进入中级开发阶段,我们之前很多土办法就很难生效了。这时我们就应该补充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教程和代码关注专栏

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容