如何在预览中设置环境对象

Posted

技术标签:

【中文标题】如何在预览中设置环境对象【英文标题】:How to set an Environment Object in preview 【发布时间】:2019-09-04 05:27:06 【问题描述】:

我的视图需要一个在 SceneDelegate 中设置的环境对象,方法是将其添加到 window.rootViewController。如何设置用于预览的环境对象?

【问题讨论】:

您是否尝试在预览视图中添加 .environmentObject()? 【参考方案1】:

您使用 .environmentObject(_:) 修饰符添加它:

struct ContentView_Previews: PreviewProvider 

    static var previews: some View 
        ContentView()
            .environmentObject(YourObject())
    

【讨论】:

噢!感谢您的帮助! 如果你想在模型中预定义一些数据类型怎么办?像 YourObject.theArrayInside = [1, 2, 3]【参考方案2】:

只要 environmentObject(_:) 修饰符已应用于父级,此 userData 属性就会自动获取其值。

     struct UserList: View 

        @EnvironmentObject var userData: UserData

        var body: some View 
            NavigationView 
                List 
                    Toggle(isOn: $userData.showFavoritesOnly) 
                        Text("Users Fav only")
                    

                    ForEach(landmarkData)  landmark in
                        if !self.userData.showFavoritesOnly || landmark.isFavorite 
                            NavigationLink(destination: LandmarkDetail(landmark: landmark)) 
                                UserRow(landmark: landmark)
                            
                        
                    
                
                .navigationBarTitle(Text("Users"))
            
        
    

    struct UserList_Previews: PreviewProvider 
        static var previews: some View 
            UserList()
            .environmentObject(UserData())
        
    

【讨论】:

以上是关于如何在预览中设置环境对象的主要内容,如果未能解决你的问题,请参考以下文章

如何在播放前在videoview中设置预览图像

如何使用 window.print 在打印预览中设置默认选中/启用的背景图形选项

OpenCV - 如何在 Android 中设置全屏相机视图?

尝试在 SurfaceView 中设置时拉伸相机预览

如何在 Netbeans 中设置环境变量?

如何在android中设置按钮样式