【发布时间】:2019-09-04 05:27:06
【问题描述】:
我的视图需要一个在 SceneDelegate 中设置的环境对象,方法是将其添加到 window.rootViewController。如何设置用于预览的环境对象?
【问题讨论】:
-
您是否尝试在预览视图中添加 .environmentObject()?
我的视图需要一个在 SceneDelegate 中设置的环境对象,方法是将其添加到 window.rootViewController。如何设置用于预览的环境对象?
【问题讨论】:
您使用 .environmentObject(_:) 修饰符添加它:
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
.environmentObject(YourObject())
}
}
【讨论】:
只要 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())
}
}
【讨论】: