如何在预览中设置环境对象
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())
【讨论】:
以上是关于如何在预览中设置环境对象的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 window.print 在打印预览中设置默认选中/启用的背景图形选项