Si vous avez suivi la première partie de ce didacticiel, vous savez probablement déjà que le processus d’installation de Xamarin n’est pas trop compliqué. Xamarin a créé un très bon programme d’installation qui vérifie la plupart des exigences pour vous. Il vous suffit de cocher quelques cases et de cliquer sur Suivant. Bien que le processus d’exécution de Xamarin.iOS soit relativement similaire, il y aura quelques différences en fonction de la plate-forme sur laquelle vous développez, OS X ou Windows..
Vous constaterez rapidement que le processus de création d'applications iOS en C # est légèrement plus complexe que le processus Android. Ce n'est pas parce que le SDK est plus difficile à comprendre, mais il y a quelques pièces plus mobiles. Pour terminer ce didacticiel et pouvoir créer avec succès des applications iOS en C #, vous aurez besoin des éléments suivants:
Si vous venez du monde Windows, vous serez peut-être un peu contrarié par le fait que vous avez besoin d'un Mac et de Xcode. La réalité est que, quels que soient les outils et les langues que vous utilisez pour créer votre application iOS, seul Xcode dispose des fonctionnalités lui permettant de créer le dernier fichier distribuable iOS (.ipa) et Xcode ne fonctionne que sur un Mac. Croyez-moi, plus vite vous l'accepterez, plus vite vous profiterez du reste du processus..
Si vous avez suivi la première partie de ce didacticiel, vous avez probablement déjà une bonne connaissance du processus d’installation de Xamarin. Les étapes à suivre pour installer Xamarin.iOS sont similaires à celles de Xamarin.Android. Mais si vous n'avez pas lu le tutoriel précédent, la section suivante couvrira toutes les étapes..
Quelle que soit la plate-forme sur laquelle vous souhaitez développer votre développement, vous devrez disposer de la dernière version de Xcode et du SDK iOS. La principale raison pour laquelle vous aurez besoin de Xcode est pour le processus de construction.
D'abord, rendez-vous sur le Centre de développement iOS et créez un compte si vous n'en avez pas déjà. Vous pouvez contourner cette étape et accéder directement au Mac App Store pour télécharger Xcode, mais si vous envisagez d'exécuter votre application sur un périphérique physique, vous aurez de toute façon besoin d'un compte développeur, vous pouvez donc le faire maintenant..
Une fois créé, connectez-vous et accédez à la page Téléchargements pour obtenir la dernière version de Xcode. Cela vous mènera au Mac App Store pour terminer le processus de téléchargement et d'installation. Cela vous permettra non seulement d'obtenir la dernière version de Xcode, mais également de télécharger et d'installer la dernière version du SDK iOS. Sucré.
Ce tutoriel ne détaillera pas le processus de provisioning et le déploiement de votre application sur un périphérique. Il existe d'autres articles sur Tuts + qui couvrent ce sujet ainsi que de la documentation sur le site Web de Xamarin si vous souhaitez le faire..
Vous pouvez faire d'une pierre deux coups en vous rendant sur la page de téléchargement de Xamarin, créer un compte si vous n'en avez pas déjà un et en cliquant sur Télécharger Xamarin. Cela téléchargera le programme d’installation de Xamarin qui se chargera de toutes les vérifications, téléchargements et installations préalables. Double-cliquez sur le .Dmg fichier pour démarrer l'installation.
Une fois le programme d’installation lancé, vous pouvez sélectionner les éléments à installer. Vous aurez seulement besoin de l’option Xamarin.iOS pour ce tutoriel, mais n'hésitez pas à en installer autant ou aussi peu que vous le souhaitez.
Cet écran peut avoir un aspect légèrement différent sur votre ordinateur en fonction du système d'exploitation que vous utilisez et des produits que vous avez peut-être déjà installés ou non. Comme mentionné précédemment, vous aurez toujours besoin de terminer ce processus sur un Mac si vous effectuez votre développement sur un PC. Une partie de l’installation de Xamarin.iOS est la Constructeur Xamarin qui vous permet de vous connecter à votre Mac via le réseau à partir d’un PC et de créer le .ipa package qui s'exécute sur le simulateur iOS ou un périphérique physique.
Une fois que tous les packages ont été téléchargés et installés, vous pouvez démarrer Xamarin Studio si vous effectuez votre développement sur un Mac. Si vous envisagez de faire votre développement sur un PC, vous devrez suivre le même processus d'installation pour obtenir tous les bits Xamarin.iOS nécessaires, ainsi que le plugin Xamarin pour Visual Studio sur votre ordinateur Windows..
Pour ce faire, vous devez au moins posséder l'édition Business de Xamarin. Vous pouvez obtenir tout ce dont vous avez besoin grâce à l'essai gratuit de 30 jours de Xamarin, si vous ne l'avez pas déjà. Si vous n'avez pas accès à la version d'évaluation gratuite ou au logiciel complet, vous devrez utiliser Xamarin Studio sur votre Mac..
Le meilleur moyen d'apprendre réellement une nouvelle technologie est de creuser et de créer quelque chose à partir de rien. Vous pouvez créer cette application dans l’environnement de développement intégré (IDE), il vous suffit de suivre l’exemple de code..
À l'ère moderne du développement iOS, vous disposez de trois options pour créer l'interface utilisateur de votre application..
Bien que les première et deuxième options soient les plus populaires, nous allons créer l'exemple d'application à l'aide de la troisième option. Il est important non seulement de comprendre comment procéder, mais également de comprendre pourquoi les outils graphiques ont été créés..
Si vous utilisez Visual Studio sur un ordinateur Windows pour suivre ce tutoriel, lorsque vous démarrez le processus de création du projet, une boîte de dialogue vous demandant de vous connecter à un Xamarin Construire l'hôte. Il s’agit d’un processus assez simple dans lequel il vous suffit de suivre les instructions à l’écran. Ça va ressembler à quelque chose comme ça.
La première boîte de dialogue que vous verrez est une fenêtre d’instructions qui explique comment démarrer le logiciel. Constructeur Xamarin sur votre Mac en utilisant Projecteur.
Sur votre Mac, ouvrez le Constructeur Xamarin et cliquez sur le Paire bouton. Cela vous fournira un ÉPINGLE.
Revenez dans Visual Studio et cliquez sur le bouton Continuerbouton. Si votre Mac est configuré correctement, il devrait apparaître dans la liste comme possible. Xamarin Construire des hôtes.
Cliquez votre Constructeur Xamarin système de choix et choisissez Relier.
Visual Studio demandera alors la ÉPINGLE. Une fois que vous avez entré le ÉPINGLE et associé Visual Studio à votre Constructeur Xamarin, vous pourrez suivre la suite de ce didacticiel, non seulement écrire une application iOS en C #, mais aussi le faire avec Visual Studio. Impressionnant.
Si jamais vous avez besoin de connecter ce particulier Constructeur Xamarin sur un autre système, vous pouvez cliquer sur le bouton Dissocier bouton. Après cela, vous devrez répéter le processus pour le nouveau système..
Heureusement, Visual Studio se souviendra de la Constructeur Xamarin vous avez déjà connecté avec. Si vous dissociezVisual Studio à partir du Constructeur Xamarin, la prochaine fois que vous essayez d’écrire une application iOS dans Visual Studio, il vous demandera la ÉPINGLE pour le même hôte de construction. Pour rechercher un autre hôte dans Visual Studio, cliquez sur Les options du Outils menu et choisir Xamarin> Paramètres iOS. Là vous trouverez un bouton qui dit Trouver un hôte de construction Mac. Cela affichera la boîte de dialogue permettant de sélectionner un autre Constructeur Xamarin.
Commencez par ouvrir votre IDE de choix et sélectionnez Fichier> Nouveau> Solution ou Projet en fonction de l'EDI que vous utilisez. Du Nouvelle solution boîte de dialogue, choisissez C #> iOS> iPhone dans l'arborescence et sélectionnez Projet vide comme modèle. Cela vous donnera la structure de base de votre application sans que tout le monde ne se mêle à votre chemin. Voici à quoi cela ressemblera dans Xamarin Studio 5.0.
Vous pouvez donner à votre solution le nom de votre choix, mais si vous souhaitez suivre avec moi, nommez-la. Chargeur. Une fois la structure de la solution / projet créée, vous verrez un certain nombre de fichiers sur lesquels il est utile de zoomer:
Dans le monde d'iOS, le AppDéléguer
est le conduit vers votre application à partir de l'appareil. Il est utilisé pour gérer tous les événements système nécessaires. Le délégué à l’application conserve également une référence au la fenêtre
objet. Chaque application iOS possède une fenêtre, une instance du UIWindow
classe, utilisée pour dessiner l'interface utilisateur de l'application. le AppDéléguer
est responsable de la souscription à tous les événements système relatifs à votre application, par exemple, lorsque l'application a fini de se lancer ou lorsqu'elle est arrêtée par le système d'exploitation.
Ce fichier est similaire à la section des autorisations du manifeste AndroidManifest. Il spécifie les autorisations dont dispose l'application ainsi que les technologies qu'il est autorisé à utiliser. Parmi les technologies les plus courantes, citons iCloud, PassKit, Push Notifications, etc. Vous pouvez penser à un plist ou liste de propriété fichier en tant que dictionnaire de paires clé-valeur qui stockent les propriétés utilisées par votre application.
Semblable au fichier Entitlements.plist, le fichier Info.plist stocke les paires clé-valeur. La différence est que ce fichier stocke des informations d'application telles que le nom de l'application, les icônes, les images de lancement, etc..
Ce fichier contient le point d’entrée principal de votre application. le Principale
Cette méthode crée une nouvelle application Xamarin.iOS et spécifie le AppDéléguer
qui gérera les événements envoyés par le système d'exploitation.
La première étape de la création de l'exemple d'application consiste à disposer d'un objet qui stocke les informations que vous souhaitez afficher pour l'utilisateur. Dans ce cas, vous souhaitez stocker des informations sur les articles qui apparaissent sur le flux de blog RSS Xamarin. Vous pouvez stocker plus de données que l'exemple, mais cela vous aidera à démarrer. Commencez par créer une nouvelle classe et nommez-la. RssItem
. La définition de la classe devrait ressembler à ceci:
Classe publique RssItem chaîne publique Titre get; ensemble; chaîne publique Creator get; ensemble; public DateTime PubDate get; ensemble; chaîne publique Link get; ensemble;
Le cours est assez simple:
Titre
, une chaîne représentant le titre de l'articleCréateur
, une chaîne représentant l'auteur de l'articlePubDate
, une Date et heure
représentant la date de publication de l'articleLien
, une chaîne représentant le lien direct vers l'articleAvec ce jeu de modèles simple, nous pouvons maintenant nous concentrer sur l'interface utilisateur et la mise en œuvre principale de l'application..
Lors de la création d'applications iOS, vous n'avez pas d'autre choix que de suivre les Modèle Vue Contrôleur paradigme. Même si vous ne comprenez pas ce que c'est, à la fin du processus, vous serez un soldat du MVC qui s'attaque aux applications iOS sans même y penser. A un niveau élevé, le pattern MVC est composé, vous l’avez deviné, de trois parties:
Vous pouvez penser à la Modèle dans le modèle MVC en tant que composants principaux (ou classes) de votre application contenant des données / logiques commerciales importantes. Dans votre cas, le modèle est le RssItem
classe que vous venez de créer.
le Vue dans votre application, la représentation visuelle réelle des données (ou de votre modèle) sur l'appareil. Cela peut prendre la forme d’une liste de données ou de certains composants personnalisés représentant les données présentes dans votre ordinateur. Modèle.
Dans cet exemple, la couche de vue va consister en une liste de RssItem
les objets téléchargés à partir du flux susmentionné. Idéalement, le Modèle et le Vue ne sont pas conscients les uns des autres et ne doivent pas interagir directement. Les deux pièces du puzzle doivent être maintenues ensemble avec une sorte de colle.
La colle qui lie le Modèle et Vue ensemble, est le Manette. Dans le monde du développement iOS, vous verrez généralement un contrôleur sous la forme d'un ViewController
classe ou sous-classe. Cette classe a pour tâche de contrôler l’interaction entre les Modèle et Vue. L’interaction peut prendre la forme par laquelle l’utilisateur touche une partie de la Vue et mettre à jour le Modèle sur la base de cette interaction ou une partie du Modèle mis à jour par un autre processus dans les coulisses et la mise à jour du Vue sur la base de ce changement.
Pour implémenter le modèle MVC dans votre application, vous devez créer un Vue et un Manette. Ajoutez un nouvel élément à votre projet en cliquant avec le bouton droit de la souris sur votre projet et en sélectionnant Ajouter> Nouveau fichier (ou Article en fonction de votre IDE). dans le Nouveau dialogue de fichier, vous devez sélectionner le iOS groupe et le Contrôleur de vue iPhone comme le type et lui donner un nom de FeedItem
.
Ce processus va ajouter trois nouveaux fichiers à votre projet. Tous ces fichiers ont des buts différents, mais ensemble, ils vont construire votre vue de liste qui présentera les articles du blog Xamarin à l'utilisateur..
le FeedItemCell
est une classe qui décrit les cellules d'individus (ou lignes) de votre vue Liste. Cette classe vous permettra de modifier l'apparence et la présentation ainsi que la fonctionnalité de toutes les cellules de la liste pour lui donner une apparence personnalisée..
La source de données visualisée dans votre liste de FeedItemCell
les objets se présentent sous la forme de FeedItemSource
classe. Cette classe source contient non seulement les données qui seront visualisées dans votre liste, mais également des informations sur la liste, notamment ses regroupements, ses en-têtes, ses pieds de page et le nombre d'éléments. Il gère également les interactions avec les éléments lorsqu'un utilisateur touche l'un d'eux..
Encore une fois, le contrôleur actuel est la colle qui unit toutes choses. le FeedItemController
classe est la classe conteneur qui créera la vue liste pour que l'utilisateur puisse voir à l'écran. Dans cette classe, vous devrez obtenir les données appropriées à afficher à l’écran, initialiser un nouveau FeedItemSource
avec ces données, et passe la source au contrôleur.
Maintenant que toutes les pièces du puzzle sont prêtes, il est temps de les assembler. Commençons par les trois fichiers que vous venez de créer et préparez-les pour nos données. Tout d’abord, jetez un coup d’œil au FeedItemCell
classe et le modifier pour ressembler à ceci.
namespace Feeder classe publique FeedItemCell: UITableViewCell publique statique en lecture seule NSString Key = new NSString ("FeedItemCell"); public FeedItemCell (): base (UITableViewCellStyle.Subtitle, Key) // TODO: ajoute des sous-vues à ContentView, définit diverses couleurs, etc. TextLabel.Text = "TextLabel";
Il ne se passe pas beaucoup de choses dans cette classe et vous ne ferez qu’un petit changement. Cette classe va hériter de UITableViewCell
. Tout ce que cette classe contient est un constructeur qui appelle le constructeur de base en lui transmettant deux données..
Sous-titre
style. Ce style permet de placer deux champs de texte dans la cellule, l'un au-dessus de l'autre..FeedItemCell
clé.La prochaine pièce du puzzle est la FeedItemSource
classe. Remplacez le contenu de l'implémentation par défaut par ce qui suit:
namespace Feeder liste publique FeedItemSource: UITableViewSource liste privée_articles; public FeedItemSource (List items) _items = items; public override int NumberOfSections (UITableView tableView) // TODO: renvoie le nombre réel de sections return 1; public override int RowsInSection (table, UITableView, int section) // TODO: renvoie le nombre réel d'éléments dans la section return _items.Count; public substitue UITableViewCell GetCell (UITableView tableView, NSIndexPath indexPath) var cell = tableView.DequeueReusableCell (FeedItemCell.Key) en tant que FeedItemCell; if (cell == null) cell = new FeedItemCell (); // TODO: renseignez la cellule avec les données appropriées en fonction de la cellule indexPath.TextLabel.Text = _items [indexPath.Row] .Title; cell.DetailTextLabel.Text = string.Format ("0 sur 1", _items [indexPath.Row] .Creator, _items [indexPath.Row] .PubDate); cellule de retour; public override void RowSelected (UITableView tableView, NSIndexPath indexPath) var item = _items [indexPath.Row]; var url = new NSUrl (item.Link); UIApplication.SharedApplication.OpenUrl (url);
Décrivons-le pour mieux comprendre ce qui se passe. La source a besoin des données qui seront affichées dans la liste et qui sont généralement gérées dans le constructeur.
liste privée_articles; public FeedItemSource (List items) _items = items;
Les données source de votre liste vont être fournies par une liste de vos classes de modèle, RssItem
. Cette liste d’éléments est passée au constructeur de la FeedItemSource
classe et tenue dans une variable privée _articles
.
public override int NumberOfSections (UITViewView tableView) // TODO: renvoie le nombre réel de sections return 1;
Lorsque vous utilisez des listes dans une application iOS, vous avez la possibilité de regrouper des cellules en sections. le NumberOfSections
La méthode retourne combien de sections ou de groupes se trouvent dans la liste. Dans cette application particulière, il existe un seul groupe contenant tous les éléments, ce qui signifie que la méthode retourne 1
.
public override int RowsInSection (tableable UITableView, section int) // TODO: renvoie le nombre réel d'éléments de la section return _items.Count;
Une fois le nombre de sections de la liste défini, la vue tableau doit savoir combien d'éléments se trouvent dans chaque section. Vous avez déjà passé la liste des RssItem
les objets qui vont apparaître dans la liste dans le constructeur et qui l'ont enregistré dans la variable privée _articles
, tout ce que vous avez à faire est de revenir _items.Count
.
remplacement public UITableViewCell GetCell (UITableView tableView, NSIndexPath indexPath) var cell = tableView.DequeueReusableCell (FeedItemCell.Key) en tant que FeedItemCell; if (cell == null) cell = new FeedItemCell (); // TODO: renseignez la cellule avec les données appropriées en fonction de la cellule indexPath.TextLabel.Text = _items [indexPath.Row] .Title; cell.DetailTextLabel.Text = string.Format ("0 sur 1", _items [indexPath.Row] .Creator, _items [indexPath.Row] .PubDate); cellule de retour;
La partie suivante, et sans doute la plus importante, de l’implémentation source est la GetCell
méthode. Le but de cette méthode est de produire et de réutiliser les cellules présentes dans la liste..
var cell = tableView.DequeueReusableCell (FeedItemCell.Key) en tant que FeedItemCell; if (cell == null) cell = new FeedItemCell ();
La première ligne appelle le DequeueReusableCell
méthode en passant un argument de la Clé
d'une cellule qu'il cherche. Une des idées derrière une liste est que si les données source contiennent plus d'éléments que la section visible de l'écran ne peut en contenir, il n'y a aucune raison de créer continuellement ces cellules et d'utiliser les ressources système..
Au lieu de cela, quand une cellule sort de l'écran, elle n'est pas simplement jetée. Il est placé dans un pool d'autres cellules pour une utilisation ultérieure. Plus tard, quand une cellule avec une clé particulière est nécessaire, le système vérifie d'abord le pool de cellules réutilisables pour les cellules avec cette clé. Si aucune cellule réutilisable ne peut être trouvée, la variable de cellule est nul
, et un nouveau FeedItemCell
est créé.
cell.TextLabel.Text = _items [indexPath.Row] .Title; cell.DetailTextLabel.Text = string.Format ("0 sur 1", _items [indexPath.Row] .Creator, _items [indexPath.Row] .PubDate); cellule de retour;
Si une cellule est prête à être utilisée, elle doit être renseignée avec des données. Comment vous faites cela est entièrement à vous. Dans notre exemple, nous avons spécifié que chaque cellule est du Sous-titre
type, ce qui signifie qu'il a deux étiquettes. Haut Étiquette
est appelé le TextLabel
. Dans notre exemple, il est rempli avec le Titre
propriété d'un RssItem
objet. Chercher le bon RssItem
objet, nous utilisons le indexPath.Row
propriété. Le fond Étiquette
est appelé le DetailTextLabel
et est peuplé d'une concaténation du Créateur
et PubDate
propriétés du correspondant RssItem
objet.
remplacement public void RowSelected (UITableView tableView, NSIndexPath indexPath) var item = _items [indexPath.Row]; var url = new NSUrl (item.Link); UIApplication.SharedApplication.OpenUrl (url);
Le final passer outre
méthode dans le FeedItemSource
la classe est RowSelected
. Cette méthode est appelée chaque fois qu'une cellule de la liste est exploitée par l'utilisateur. Dans ce cas, quand un utilisateur touche une cellule, vous récupérez le RssItem
exemple en utilisant le indexPath.Row
propriété. Vous créez alors un nouveau NSUrl
objet avec le Lien
propriété du RssItem
objet et passe que NSUrl
au UIApplication.SharedApplication.OpenUrl
méthode. Cette méthode déterminera quelle application sur le périphérique ou l'émulateur convient le mieux pour gérer l'URL. Dans notre exemple, comme l’URL représente une adresse Web, le navigateur intégré du périphérique ou du simulateur gérera la demande..
Il est temps de tourner notre attention vers le FeedItemController
classe.
namespace Feeder liste publique FeedItemController: UITableViewController liste privée_articles; public FeedItemController (): base () using (var client = new HttpClient ()) var xmlFeed = client.GetStringAsync ("http://blog.xamarin.com/feed").Result; var doc = XDocument.Parse (xmlFeed); XNamespace dc = "http://purl.org/dc/elements/1.1/"; _items = (depuis item dans doc.Descendants ("item"), sélectionnez un nouveau RssItem Title = item.Element ("title"). Value, PubDate = DateTime.Parse (item.Element ("pubDate"). Value), Creator = item.Element (dc + "creator"). Value, Link = item.Element ("link"). Value). ToList (); public override void DidReceiveMemoryWarning () // Libère la vue si elle n'a pas de superview. base.DidReceiveMemoryWarning (); // Libère toutes les données, images, etc. mises en cache qui ne sont pas utilisées. async public écrasé ViewDidLoad () base.ViewDidLoad (); // Enregistre la source de données de TableView TableView.Source = new FeedItemSource (_items);
Avant de pouvoir compiler ce code avec succès, vous devrez ajouter une référence à la System.Xml.Linq
Assemblée. Vous pouvez le faire en faisant un clic droit sur Références dans votre projet et en sélectionnant Ajouter une référence ou Modifier les références, en fonction de l'EDI que vous utilisez. Vous devrez également ajouter le using System.Xml.Linq;
instruction en haut du fichier de classe.
liste privée_articles; public FeedItemController (): base () using (var client = new HttpClient ()) var xmlFeed = client.GetStringAsync ("http://blog.xamarin.com/feed").Result; var doc = XDocument.Parse (xmlFeed); XNamespace dc = "http://purl.org/dc/elements/1.1/"; _items = (depuis item dans doc.Descendants ("item"), sélectionnez un nouveau RssItem Title = item.Element ("title"). Value, PubDate = DateTime.Parse (item.Element ("pubDate"). Value), Creator = item.Element (dc + "creator"). Value, Link = item.Element ("link"). Value). ToList ();
C’est là que réside toute la logique permettant de récupérer les données du flux de blog RSS Xamarin. Si vous avez suivi la version Android du didacticiel Introduction à Xamarin, cela vous paraîtra probablement familier. C'est parce que c'est exactement le même code.
Vous commencez par créer un HttpClient
et en utilisant le GetStringAsync
méthode pour télécharger les données trouvées à l’URL fournie et utiliser le Analyser
méthode sur le XDocument
classe pour préparer les données pour un peu de magie Linq-to-Xml. Une fois que vous avez le XDocument
objet, vous pouvez l'interroger pour obtenir les valeurs de tous les éléments d'élément enfant présents dans le flux RSS et initialiser les instances de l'élément. RssItem
classe et les sauver dans le privé _articles
variable.
Après le constructeur, il n'y a que deux méthodes présentes dans l'implémentation. Ces méthodes sont DidReceiveMemoryWarning
et ViewDidLoad
. Vous n'avez rien à faire avec la première méthode, mais comme la plupart des choses, il est rentable de savoir au moins à quoi ça sert.
le DidReceiveMemoryWarning
La méthode est appelée à n'importe quel moment de l'exécution de cette classe lorsque le périphérique ou le simulateur a déterminé que votre application utilise peut-être trop de mémoire et peut éventuellement être arrêtée. C'est l'occasion de libérer des ressources gourmandes en mémoire pour éviter que cela ne se produise. Comme son nom l'indique, le ViewDidLoad
la méthode est invoquée lorsque la vue est chargée et avant qu'elle ne soit présentée à l'utilisateur.
remplacement asynchrone public void ViewDidLoad () base.ViewDidLoad (); // Enregistre la source de données de TableView TableView.Source = new FeedItemSource (_items);
Dans cette méthode, nous appelons la méthode de base de ViewDidLoad
et créer une nouvelle instance du FeedItemSource
classe, l'assigner à la TableView.Source
propriété. Une fois cette opération effectuée, l'utilisateur pourra voir les données extraites du flux RSS et placées dans la vue liste. Si vous êtes confus où le TableView
la propriété vient de, il a hérité de la FeedItemController
la classe de base de, UITableViewController
. Cette classe de base fournit une référence à la vue de table réelle qui se trouve dans la vue du contrôleur de vue..
Vous avez maintenant tous les éléments nécessaires pour présenter une liste d'articles à l'utilisateur. Le seul problème est qu’aucune de ces informations n’est encore disponible. La raison en est que votre application n'a pas été invitée à utiliser le FeedItemController
pour montrer les données à l'utilisateur. Pour ce faire, vous devez apporter une petite modification à votre AppDéléguer
classe.
le AppDéléguer
la classe contient actuellement une méthode, TerminéLancement
. Cette méthode est appelée sur le délégué d'application par le système d'exploitation. Pour que tout fonctionne, nous devons apporter une légère modification à sa mise en œuvre.
public override bool FinishedLaunching (application UIApplication, options NSDictionary) // crée une nouvelle instance de fenêtre en fonction de la taille de l'écran window = new UIWindow (UIScreen.MainScreen.Bounds); var controller = new FeedItemController (); controller.View.BackgroundColor = UIColor.White; controller.Title = "Aliments Xamarin"; var navController = new UINavigationController (contrôleur); window.RootViewController = navController; // rend la fenêtre visible window.MakeKeyAndVisible (); retourne vrai;
Les quatre premières lignes sont assez standard. Vous créez une nouvelle instance du UIWindow
classe, qui contiendra l'interface utilisateur de votre application. Vous créez ensuite une nouvelle instance du FeedItemController
classe et définir c'est Couleur de fond
propriété à UIColor.White
et lui donner un Titre
.
Les deux lignes suivantes peuvent sembler un peu déroutantes. Vous créez une nouvelle instance d'un UINavigationController
, passe le FeedItemController
exemple dans le constructeur, définissez le RootViewController
propriété du la fenêtre
objecter à la UINavigationController
, et appeler MakeKeyAndVisible
. Pourquoi avons-nous besoin de passer par cette galère? Pourquoi ne pouvons-nous pas régler le RootViewController
au FeedItemController
et appeler ça un jour? Vous pouvez le faire et votre application fonctionnera toujours. Cependant, si vous faites cela, la barre d'état en haut de l'écran s'affichera en haut de votre liste et aura une mauvaise apparence. Ajouter votre contrôleur à un UINavigationController
est un petit truc qui accomplit deux choses: