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

G. *_*arc 12 swift swiftui

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

LuL*_*aGa 30

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

struct ContentView_Previews: PreviewProvider {

    static var previews: some View {
        ContentView()
            .environmentObject(YourObject())
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 如果您想要在模型中预定义一些数据怎么办?就像 YourObject.theArrayInside = [1, 2, 3] (2认同)

Ved*_*yar 6

只要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())
        }
    }
Run Code Online (Sandbox Code Playgroud)