如何预览包含与其父视图状态绑定的视图?

Posted

技术标签:

【中文标题】如何预览包含与其父视图状态绑定的视图?【英文标题】: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 的限制。

【问题讨论】:

【参考方案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()))
        
    

【讨论】:

以上是关于如何预览包含与其父视图状态绑定的视图?的主要内容,如果未能解决你的问题,请参考以下文章

调用触摸手势事件时如何检查其父视图或子视图?

如何在图像视图周围制作圆形边框

将自定义 UIView 笔尖的宽度设置为其父 CollectionViewCell

通过 IKImage 视图预览图像

绑定视图 - 如何从子列表中获取父属性的详细信息

Android Set视图在包含视图的左侧20像素,因此其部分覆盖