5 votes

Dans WidgetKit avec des données dynamiques, comment spécifier la IntentConfiguration par défaut pour les nouveaux widgets ?

L'exemple le plus souhaitable est celui des widgets Apple Notes. Lors de l'ajout d'un widget Apple Notes, WidgetKit attribue une IntentConfiguration au nouveau widget. Vous pouvez le constater en éditant le widget et en remarquant que l'élément de sélection n'est pas "Choisir" mais qu'il inclut le nom de la note ou du dossier qui a été automatiquement sélectionné par défaut pour le nouveau widget. Vous remarquerez également que la source de données de ce widget ne change pas d'une source à l'autre - l'IntentConfiguration assignée est respectée.

Comment pouvons-nous faire cela dans nos Widgets ? Cela devrait ressembler à ceci : quelqu'un crée un nouveau widget, nous utilisons son élément de données le plus récent pour l'espace réservé, et cet élément est 1) maintenu dans le widget jusqu'à ce qu'il le modifie 2) reflété dans la boîte de dialogue d'édition du widget.

3voto

Kio Points 56

Je cherchais la même chose, en essayant de définir une valeur par défaut pour le type dynamique, donc l'idée est de définir une valeur par défaut comme on peut le faire avec les enums dans le fichier de définition de l'intention. En bref, nous devons définir la valeur par défaut du type dynamique dans le code.

Après quelques recherches, je suis tombé sur ceci (j'ai cliqué sur ma référence ConfigurationIntent dans mon code et je suis arrivé à des applis générées automatiquement ConfigurationIntent.swift).

/*! @abstract Default values for parameters with dynamic options
 @discussion Called to query the parameter default value.
 */
@available(iOS 14.0, macOS 10.16, watchOS 7.0, *)
@objc(defaultChartTypeForConfiguration:)    
optional func defaultChartType(for intent: ConfigurationIntent) -> Chart?

ici nous avons "optional fund defaultChartType" J'ai donc implanté cela dans le intenthandler.swift qui sera généré pour vous et dans lequel vous devrez ajouter du code pour récupérer et renvoyer les types dynamiques. Cela devrait être couvert dans n'importe quel tutoriel sur l'affichage des dynamiques dans l'écran de configuration du widget. J'ai donc ajouté la fonction optionnelle ci-dessus dans ce fichier. ChartType est mon type dynamique que j'ai créé dans le fichier intentDefinition. Le vôtre sera différent pour correspondre à vos noms.

J'espère que cela vous aidera et que vous pourrez suivre la procédure.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X