我正在尝试使用小部件上下文预览一些视图,例如:
struct MyTasksView_Previews: PreviewProvider {
static var previews: some View {
MyTasksView(
myTasks: Fake.myTasks,
user: Fake.user,
error: ""
)
.previewContext(WidgetPreviewContext(family: .systemMedium))
}
}
但是,我在尝试运行预览时收到此错误。而且,我不确定为什么会发生这种情况。
RemoteHumanReadableError:未知的预览提供程序“MyTasksView_Previews” MyApp 不包含名为“MyTasksView_Previews”的预览提供程序。检查您的构建设置以确保预览提供程序已编译到您的产品中。
我也尝试使用简单的
Text(text).previewContext(WidgetPreviewContext(family: .systemMedium))
,但也不起作用。我正在使用 Xcode beta 5。
在 WWDC 2020 的 Apple Emoji Rangers Demo App 中,我们可以看到这段代码进行预览:
struct CharacterNameView_Previews: PreviewProvider {
static var previews: some View {
CharacterNameView(CharacterDetail.panda)
.previewContext(WidgetPreviewContext(family: .systemSmall))
}
}
我遇到了类似的问题,我通过将视图放入 VStack(或另一个容器)中解决了它。
这是我有效的代码:
struct WidgetViewPreviews: PreviewProvider {
static var previews: some View {
VStack {
WidgetView(entry: .mock)
}
.previewContext(WidgetPreviewContext(family: .systemSmall))
}
}
在将小部件扩展添加到我的 UIKit 应用程序时,我遇到了同样的问题。
将类目标成员资格更改为小部件扩展为我解决了这个问题。
添加
Widget extension
目标并激活它。欲了解更多信息
https://developer.apple.com/documentation/widgetkit/creating-a-widget-extension
对我来说是: 也在 App Target 中添加小组件视图