Créez un modèle pour le widget ajouté dans iOS14 avec la configuration d'intention. (Ceux qui affichent le menu "Modifier le widget") Utilisez la génération automatique Xcode dans la mesure du possible. Puisqu'il s'agit d'un modèle, il n'a aucune fonction, mais j'espère que ce sera la base de la production de masse de widgets.
Je pense que la plupart des applications sont toujours faites avec UIKit, donc j'ai choisi ʻUIKit App Delegate`. Le nom est «LeaderCard» en supposant une demande de carte de crédit. : détendu:
Appuyez sur «+» ici.
Sélectionnez Extension de widget et appuyez sur «Suivant».
ʻCheck Inclure l'intention de configuration. (← important ici!) Si vous ne le cochez pas, ce sera
Configuration statique`.
Le nom du widget est «LeaderCardWidget».
Appuyez sur «+» ici.
Sélectionnez Extension Intents et appuyez sur Suivant
.
Ne cochez pas «Inclure l'extension de l'interface utilisateur». (← important ici!) Sélectionnez "Aucun" pour "Point de départ". (← important ici!) Le nom du gestionnaire d'intention est «LeaderCardIntent».
Ouvrez le LeaderCardWidget.intentdefinision
généré dans le dossier LeaderCardWidget
.
Appuyez sur «+» en bas pour sélectionner «Nouveau type».
Définissez Card
sur le nom du type. Vous n'êtes pas obligé de toucher au contenu de Card
.
Parameters
Réglez comme indiqué sur la figure ci-dessous.
Parameter
Le paramètre est défini sur «card» en minuscules. (← important ici!)
C'est parce qu'il s'agit du nom de propriété de la classe générée automatiquement ConfigurationIntent
.
Display Name La chaîne de caractères spécifiée ici est affichée à l'emplacement indiqué dans la figure ci-dessous.
Type Sélectionnez «Carte».
Configurable Vérifier.
Dynamic Options Vérifier.
Prompt Label La chaîne de caractères spécifiée ici est affichée à l'emplacement indiqué dans la figure ci-dessous.
Target Membership Cochez «LeaderCardWidgetExtension» et «LeaderCardIntent». (← important ici!)
Etat initial
IntentHandler.swift
class IntentHandler: INExtension {
override func handler(for intent: INIntent) -> Any {
// This is the default implementation. If you want different objects to handle different intents,
// you can override this and return the handler you want for that particular intent.
return self
}
}
Ajoutez le protocole ConfigurationIntentHandling
.
Ensuite, il vous sera demandé si vous souhaitez ajouter protocole stub
, alors appuyez sur Fix
.
La méthode provideCardOptionsCollection
est ajoutée.
Écrivez completion (nil, nil)
dans la partie code
.
(Comme il s'agit d'un modèle, rien ne fonctionne.)
IntentHandler.swift
class IntentHandler: INExtension {
func provideCardOptionsCollection(for intent: ConfigurationIntent, with completion: @escaping (INObjectCollection<Card>?, Error?) -> Void) {
completion(nil, nil)
}
override func handler(for intent: INIntent) -> Any {
// This is the default implementation. If you want different objects to handle different intents,
// you can override this and return the handler you want for that particular intent.
return self
}
}
Le modèle devrait maintenant être complet. Une fois exécuté, l'écran suivant s'affiche. Nous allons étoffer cela et le rapprocher du widget souhaité.
GitHub
Nous avons créé un référentiel de modèles
ici, veuillez donc l'utiliser si vous le souhaitez.
iOS14-Widget-IntentConfiguration-template
Recommended Posts