SwiftUI预览页面,可绑定的URL?

时间:2020-07-24 08:32:41

标签: xcode model binding swiftui preview

在我的AdminView_Previews上,我试图显示我的AdminView,并且从视图中要求它传递类型为userInfo的名为UserModel的可绑定对象。

UserModel有一个来自immagine的变量URL?

这是我的预览:

struct AdminView_Previews: PreviewProvider {
    static var previews: some View {
        Group {
            NavigationView{
            AdminView(dm: DataManager(), userInfo: bindModelUserInfo())
            }
            
            NavigationView{
            AdminView(dm: DataManager(), userInfo: bindModelUserInfo())
            }
            .previewDisplayName("Test")
            .background(Color(.systemBackground))
            .environment(\.colorScheme, .dark)
        }
    }
}

我的bindingModelUserInfo()

func bindModelUserInfo() -> Binding<UserModel?> {
    
    var variabile : UserModel = UserModel(username: "dm1886", email: "dsadsa@gmail.com", userID: "test", adminLevel: "user", immagine: nil )
    
    let boolVariableBinding : Binding<UserModel?> = Binding(get: { variabile },
                                                            set: { variabile = $0! })
    return boolVariableBinding
}

如果我将nil传递给immagine,则预览无法加载。

任何想法如何解决此问题?如何将URL immagine传递给预览?

在模拟器应用上,一切正常。

1 个答案:

答案 0 :(得分:1)

您可以创建一个@State变量,将其像这样输入到userInfo中。

struct AdminView_Previews: PreviewProvider {

    @State var mockUserInfo: UserModel = UserModel(username: "dm1886", 
                                                   email: "dsadsa@gmail.com", 
                                                   userID: "test", 
                                                   adminLevel: "user", 
                                                   immagine: nil)

    static var previews: some View {
        Group {
            NavigationView{
            AdminView(dm: DataManager(), userInfo: $mockUserInfo)
            }
            
            NavigationView{
            AdminView(dm: DataManager(), userInfo: $mockUserInfo)
            }
            .previewDisplayName("Test")
            .background(Color(.systemBackground))
            .environment(\.colorScheme, .dark)
        }
    }
}

您是否也可以共享AdminView的代码?变量immagine可能不起作用,因为您需要处理URL?AdminView的大小写。我不知道您的AdminView内是什么,但是处理immagine为nil时返回EmptyView的路径可能会解决问题。