Création d’une application Xamarin.iOS à l’aide de l’API Réflexions ion
The MT. L’API D Réflexions ion permet aux classes d’être décorées avec des attributs que MT. D utilise pour créer automatiquement des écrans. L’API de réflexion fournit une liaison entre ces classes et ce qui est affiché à l’écran. Bien que cette API ne fournisse pas le contrôle précis que l’API d’éléments effectue, elle réduit la complexité en créant automatiquement la hiérarchie des éléments en fonction de la décoration de classe.
Configuration de MT. D
MT. D est distribué avec Xamarin.iOS. Pour l’utiliser, cliquez avec le bouton droit sur le nœud Références d’un projet Xamarin.iOS dans Visual Studio 2017 ou Visual Studio pour Mac et ajoutez une référence à l’assembly MonoTouch.Dialog-1. Ensuite, ajoutez using MonoTouch.Dialog
des instructions dans votre code source si nécessaire.
Prise en main de l’API Réflexions ion
L’utilisation de l’API Réflexions ion est aussi simple que :
- Création d’une classe décorée avec MT. Attributs D.
- Création d’une
BindingContext
instance, en lui transmettant une instance de la classe ci-dessus. - Création d’un
DialogViewController
, en passant leBindingContext’s
RootElement
.
Examinons un exemple pour illustrer l’utilisation de l’API Réflexions ion. Dans cet exemple, nous allons créer un écran d’entrée de données simple, comme indiqué ci-dessous :
Création d’une classe avec MT. Attributs D
La première chose que nous devons utiliser l’API Réflexions ion est une classe décorée avec des attributs. Ces attributs seront utilisés par MT. D en interne pour créer des objets à partir de l’API Elements. Par exemple, considérez la définition de classe suivante :
public class Expense
{
[Section("Expense Entry")]
[Entry("Enter expense name")]
public string Name;
[Section("Expense Details")]
[Caption("Description")]
[Entry]
public string Details;
[Checkbox]
public bool IsApproved = true;
}
Les SectionAttribute
sections de la UITableView
création sont alors créées, avec l’argument de chaîne utilisé pour remplir l’en-tête de la section. Une fois qu’une section est déclarée, chaque champ qui suit sera inclus dans cette section, jusqu’à ce qu’une autre section soit déclarée.
Le type d’élément d’interface utilisateur créé pour le champ dépend du type du champ et du mt. Attribut D le décorant.
Par exemple, le Name
champ est un string
et il est décoré avec un EntryAttribute
. Cela entraîne l’ajout d’une ligne à la table avec un champ d’entrée de texte et le légende spécifié. De même, le IsApproved
champ est un bool
champ avec une CheckboxAttribute
ligne de tableau avec un case activée box à droite de la cellule de tableau. MT. D utilise le nom du champ, ajoutant automatiquement un espace, pour créer le légende dans ce cas, car il n’est pas spécifié dans un attribut.
Ajout de BindingContext
Pour utiliser la Expense
classe, nous devons créer un BindingContext
. Il BindingContext
s’agit d’une classe qui lie les données de la classe attribuée pour créer la hiérarchie d’éléments. Pour en créer un, nous l’instancions et transmettons simplement une instance de la classe attribuée au constructeur.
Par exemple, pour ajouter l’interface utilisateur que nous avons déclarée à l’aide de l’attribut dans la Expense
classe, incluez le code suivant dans la FinishedLaunching
méthode du AppDelegate
:
var expense = new Expense ();
var bctx = new BindingContext (null, expense, "Create a task");
Ensuite, il nous suffit de créer l’interface utilisateur BindingContext
et de la DialogViewController
définir comme RootViewController
fenêtre, comme indiqué ci-dessous :
UIWindow window;
public override bool FinishedLaunching (UIApplication app, NSDictionary options)
{
window = new UIWindow (UIScreen.MainScreen.Bounds);
var expense = new Expense ();
var bctx = new BindingContext (null, expense, "Create a task");
var dvc = new DialogViewController (bctx.Root);
window.RootViewController = dvc;
window.MakeKeyAndVisible ();
return true;
}
L’exécution de l’application entraîne maintenant l’affichage de l’écran ci-dessus.
Ajout d’un UINavigationController
Notez toutefois que le titre « Créer une tâche » que nous avons passé à l’écran BindingContext
n’est pas affiché. C’est parce que le DialogViewController
n’est pas une partie d’un UINavigatonController
. Nous allons modifier le code pour ajouter un UINavigationController
en tant que fenêtre et ajouter la DialogViewController
racine de la UINavigationController
fenêtre RootViewController,
comme indiqué ci-dessous :
nav = new UINavigationController(dvc);
window.RootViewController = nav;
Maintenant, lorsque nous exécutons l’application, le titre apparaît dans la UINavigationController’s
barre de navigation, comme le montre la capture d’écran ci-dessous :
En incluant un UINavigationController
, nous pouvons maintenant tirer parti d’autres fonctionnalités de MT. D pour laquelle la navigation est nécessaire. Par exemple, nous pouvons ajouter une énumération à la Expense
classe pour définir la catégorie pour les dépenses et mt. D crée automatiquement un écran de sélection. Pour illustrer, modifiez la Expense
classe pour inclure un ExpenseCategory
champ comme suit :
public enum Category
{
Travel,
Lodging,
Books
}
public class Expense
{
…
[Caption("Category")]
public Category ExpenseCategory;
}
L’exécution de l’application entraîne maintenant une nouvelle ligne dans le tableau de la catégorie, comme indiqué ci-dessous :
La sélection des résultats de la ligne dans l’application accédant à un nouvel écran avec des lignes correspondant à l’énumération, comme indiqué ci-dessous :
Résumé
Cet article a présenté une procédure pas à pas de l’API Réflexions ion. Nous avons montré comment ajouter des attributs à une classe pour contrôler ce qui est affiché. Nous avons également abordé l’utilisation d’une BindingContext
liaison de données d’une classe à la hiérarchie d’éléments créée, ainsi que la façon d’utiliser MT. D avec un UINavigationController
.