【问题标题】:Instance member cannot be used on type in SwiftUI Preview实例成员不能用于 SwiftUI Preview 中的类型
【发布时间】:2020-08-28 09:01:29
【问题描述】:

我的预览中出现以下错误:

struct DetailView: View {
    var header: DataProvider.DataHeader

    var body: some View {
        Text("...")
    }
}

struct DetailView_Previews: PreviewProvider {
    var a = DataProvider.DataHeader(title: "a", text: "b")

    static var previews: some View {
        DetailView(header: a)
    }
}

错误是:

Instance member 'a' cannot be used on type 'DetailView_Previews'

为什么会这样?

【问题讨论】:

    标签: swiftui preview


    【解决方案1】:

    这是由于static var preview

    所以也可以使用静态的

    static var a = DataProvider.DataHeader(title: "a", text: "b")
    

    或就地建造

    DetailView(header: DataProvider.DataHeader(title: "a", text: "b"))
    

    【讨论】:

    • 优秀的答案。这是一些编程语言积极敌视新用户的又一个例子。生成类似错误消息的工具有足够的信息来提示它遇到错误的原因。
    • 如何操作这样的静态变量?
    【解决方案2】:

    SwiftUI Preview -> 你必须在这里使用静态变量:

    struct ErrorView_Previews: PreviewProvider {
        @State static var alert = false
        @State static var error = "Please fill all the contents properly"
    
        static var previews: some View {
            ErrorView(alert: $alert, error: $error)
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2015-11-27
      • 2016-05-23
      • 2016-01-01
      • 2016-09-09
      • 2020-04-07
      • 2020-01-16
      • 2017-06-25
      • 2016-07-05
      相关资源
      最近更新 更多