如何在预览中设置环境对象
How to set an Environment Object in preview
我的视图需要一个在 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())
}
}
我的视图需要一个在 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())
}
}