Partager via


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 :

  1. Création d’une classe décorée avec MT. Attributs D.
  2. Création d’une BindingContext instance, en lui transmettant une instance de la classe ci-dessus.
  3. Création d’un DialogViewController , en passant le BindingContext’sRootElement .

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 :

Dans cet exemple, nous allons créer un écran d’entrée de données simple, comme illustré ici

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 CheckboxAttributeligne 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 :

Maintenant, lorsque nous exécutons l’application, le titre apparaît dans la barre de navigation UINavigationControllers

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 :

L’exécution de l’application entraîne maintenant une nouvelle ligne dans le tableau de la catégorie, comme indiqué

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 :

Sélection des résultats de ligne dans l’application accédant à un nouvel écran avec des lignes correspondant à l’énumération

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.