SwiftUI 预览页面,可绑定 URL?

Posted

技术标签:

【中文标题】SwiftUI 预览页面,可绑定 URL?【英文标题】:SwiftUI preview page, bindable URL? 【发布时间】:2020-07-24 08:32:41 【问题描述】:

在我的AdminView_Previews 上,我正在尝试显示我的AdminView,并且需要从视图中传递一个名为userInfoUserModel 类型的可绑定对象。

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 传递给预览版?

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

【问题讨论】:

在Mutable Binding in SwiftUI Live Preview看到我的回答,应该会有帮助的。 【参考方案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 可能不起作用,因为您需要处理AdminView 内的URL? 的情况。我不知道你的AdminView 里面有什么,但是当immagine 为零时处理路径以返回EmptyView 可以解决问题。

【讨论】:

以上是关于SwiftUI 预览页面,可绑定 URL?的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI 一新建

如何修改 SwiftUI 预览的 UIView 属性?

SwiftUI Xcode 11 beta 7 @Binding for collections 正在打破预览

SwiftUI之如何创建常量绑定与自定义绑定

SwiftUI:如何在`$`可绑定对象运算符之前使用`!`运算符?

SwiftUI:使用条件布局在画布中显示预览