Échec de la prévisualisation du widget dans Xcode avec SwiftUI Preview

Aug 28 2020

J'essaie de prévisualiser une vue en utilisant le contexte du widget, comme:

struct MyTasksView_Previews: PreviewProvider {
    static var previews: some View {
            MyTasksView(
                myTasks: Fake.myTasks,
                user: Fake.user,
                error: ""
            )
            .previewContext(WidgetPreviewContext(family: .systemMedium))
    }
}

Cependant, j'obtiens cette erreur lors de la tentative d'exécuter l'aperçu. Et je ne sais pas pourquoi cela se passe.

RemoteHumanReadableError: Fournisseur de prévisualisation inconnu "MyTasksView_Previews" MyApp ne contient pas de fournisseur de prévisualisation nommé "MyTasksView_Previews". Vérifiez vos paramètres de construction pour vous assurer que le fournisseur d'aperçu est compilé dans votre produit.

J'ai aussi essayé d'utiliser un simple Text(text).previewContext(WidgetPreviewContext(family: .systemMedium)), mais cela n'a pas fonctionné non plus. J'utilise le Xcode beta 5.

Dans l'application de démonstration Apple Emoji Rangers pour la WWDC 2020. Nous pouvons voir ce morceau de code pour un aperçu:

struct CharacterNameView_Previews: PreviewProvider {
    static var previews: some View {
        CharacterNameView(CharacterDetail.panda)
            .previewContext(WidgetPreviewContext(family: .systemSmall))
    }
}

Réponses

1 RufatMirza Jan 02 2021 at 15:44

J'ai eu le même problème et je l'ai résolu en plaçant la vue dans un VStack (ou un autre conteneur).

Voici mon code qui a fonctionné:

struct WidgetViewPreviews: PreviewProvider {

  static var previews: some View {
    VStack {
      WidgetView(entry: .mock)
    }
    .previewContext(WidgetPreviewContext(family: .systemSmall))
  }
}

Isomiddin Sep 03 2020 at 16:51

Ajoutez une Widget extensioncible et activez-la. Pour plus d'informationshttps://developer.apple.com/documentation/widgetkit/creating-a-widget-extension