【问题标题】:How do you preview a view containing a binding to its parent view's state?如何预览包含与其父视图状态绑定的视图?
【发布时间】:2020-03-11 08:57:45
【问题描述】:

我将此视图显示为来自其父视图的工作表

struct NamesView: View {
    @Binding var match: Match

    var body: some View {
        ...
    }
}

由于match 的事实来源位于呈现此NamesView 工作表的父视图中,因此在构造视图时,我传入$match 绑定,数据按预期流动。

但是,在预览提供程序中构建此视图时

struct NamesView_Previews: PreviewProvider {
    static var previews: some View {
        NamesView()
    }
}

编译器说NamesView() 需要match 类型的Binding<Match> 参数(Match 是将此视图呈现为工作表的父视图)。我不确定从这里开始的好方法是什么,或者这是否是 SwiftUI 的限制。

【问题讨论】:

    标签: swiftui


    【解决方案1】:

    如果你只想要恒定预览,那么它可以是

    struct NamesView_Previews: PreviewProvider {
            static var previews: some View {
                NamesView(match: .constant(Match()))
            }
        }
    

    如果你想要它在现场,它可以是

    struct NamesView_Previews: PreviewProvider {
        struct BindingTestHolder: View {
            @State private var testedMatch = Match()
            var body: some View {
                NamesView(match: $testedMatch)
            }
        }
    
        static var previews: some View {
            BindingTestHolder()
        }
    }
    

    【讨论】:

      【解决方案2】:

      试试这个:

      struct NamesView_Previews: PreviewProvider {
              static var previews: some View {
                  NamesView(match:.constant(Match()))
              }
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-07-07
        • 1970-01-01
        • 2017-01-03
        • 2011-08-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多