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

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

【问题讨论】:

  • 您是否尝试在预览视图中添加 .environmentObject()?

标签: swift swiftui


【解决方案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())
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-30
    • 2022-11-05
    • 1970-01-01
    • 2023-02-18
    • 1970-01-01
    • 1970-01-01
    • 2019-12-13
    相关资源
    最近更新 更多