Als je het eerste deel van deze tutorial hebt gevolgd, weet je waarschijnlijk al dat het installatieproces van Xamarin niet al te gecompliceerd is. Xamarin heeft een heel leuk installatieprogramma gemaakt dat de meeste verificatie van de vereisten voor u uitvoert en u hoeft slechts een paar vakjes aan te vinken en op te klikken volgende. Hoewel het proces van het in gebruik nemen van Xamarin.iOS erg op elkaar lijkt, zullen er een paar verschillen zijn, afhankelijk van op welk platform u zich ontwikkelt, OS X of Windows.
Je zult snel merken dat het proces van het maken van iOS-applicaties in C # iets meer betrokken is dan het Android-proces. Het is niet omdat de SDK moeilijker te begrijpen is, maar er zijn een paar meer bewegende delen. Om deze tutorial te voltooien en iOS-applicaties succesvol te kunnen maken in C #, heb je het volgende nodig:
Als je van de Windows-kant van de wereld komt, ben je misschien een beetje overstuur door het feit dat je een Mac en Xcode nodig hebt. De realiteit is dat, ongeacht welke tools en talen je gebruikt om je iOS-applicatie te maken, alleen Xcode de mogelijkheden heeft om de laatste iOS-distributeerbare (.ipa) te maken en Xcode alleen op een Mac werkt. Geloof me, hoe eerder je dit accepteert, hoe eerder je geniet van de rest van het proces.
Als je het eerste deel van deze tutorial hebt gevolgd, heb je waarschijnlijk al een redelijk goed inzicht in het installatieproces van Xamarin. De stappen die nodig zijn om Xamarin.iOS te installeren zijn vergelijkbaar met die van Xamarin.Android. Maar als u de vorige zelfstudie nog niet hebt gelezen, behandelt het volgende gedeelte alle stappen.
Ongeacht welk platform je ook gaat ontwikkelen, je zult de nieuwste versie van zowel Xcode als de iOS SDK nodig hebben. De belangrijkste reden dat u Xcode nodig hebt, is voor het bouwproces.
Ga eerst naar het iOS Dev Center en maak een account als je er nog geen hebt. Je kunt deze stap overslaan en rechtstreeks naar de Mac App Store gaan om Xcode te downloaden, maar als je van plan bent om je app op een fysiek apparaat te gebruiken, dan heb je sowieso een ontwikkelaarsaccount nodig, dus je kunt het nu net zo goed doen.
Eenmaal aangemaakt, meldt u zich aan en navigeert u naar de pagina Downloads om de nieuwste versie van Xcode te downloaden. Je wordt naar de Mac App Store gebracht om het download- en installatieproces te voltooien. Hiermee krijgt u niet alleen de nieuwste versie van Xcode, maar wordt ook de nieuwste versie van de iOS SDK gedownload en geïnstalleerd. Zoet.
In deze zelfstudie wordt niet ingegaan op het voorzieningenproces en wordt uw toepassing op een apparaat geïmplementeerd. Er zijn andere artikelen over Tuts + die dat onderwerp behandelen, evenals documentatie op de Xamarin-website als u dat wilt.
Je kunt twee vliegen in één klap doden door naar de Xamarin-downloadpagina te gaan, een account aan te maken als je er nog geen hebt en te klikken Xamarin downloaden. Hiermee wordt het Xamarin-installatieprogramma gedownload dat zorgt voor alle vereiste controle, downloaden en installeren voor u. Dubbelklik op de .dmg bestand om de installatie te starten.
Nadat het installatieprogramma is gestart, kunt u de onderdelen selecteren die u wilt installeren. Je hebt alleen de optie Xamarin.iOS nodig voor deze tutorial, maar je kunt zo veel of zo weinig installeren als je wilt.
Dit scherm kan er op uw apparaat enigszins anders uitzien, afhankelijk van het besturingssysteem dat u gebruikt en welke producten u al of niet al hebt geïnstalleerd. Zoals eerder vermeld, moet je dit proces nog steeds op een Mac voltooien als je je ontwikkeling op een pc doet. Een deel van de installatie van Xamarin.iOS is het Xamarin Build Host waarmee u via een netwerk verbinding kunt maken met uw Mac vanaf een pc en de .ipa pakket dat op de iOS Simulator of een fysiek apparaat draait.
Zodra alle pakketten zijn gedownload en geïnstalleerd, kunt u Xamarin Studio opstarten als u bezig bent met uw ontwikkeling op een Mac. Als je je ontwikkeling op een pc gaat doen, moet je hetzelfde installatieproces volgen om alle benodigde Xamarin.iOS-bits en de Xamarin-plug-in voor Visual Studio op je Windows-machine te krijgen.
Om dit te doen, moet u echter ten minste de zakelijke versie van Xamarin hebben. Je kunt alles krijgen wat je nodig hebt via de 30-daagse gratis proefperiode van Xamarin als je die nog niet hebt. Als u geen toegang heeft tot de gratis proefversie of de volledige software, moet u Xamarin Studio op uw Mac gebruiken.
De beste manier om echt een nieuwe technologie van welke aard dan ook te leren, is door in te graven en iets helemaal opnieuw te maken. U kunt deze applicatie in elke IDE (Integrated Development Environment) bouwen, het enige wat u hoeft te doen is de voorbeeldcode volgen.
In de moderne tijd van de ontwikkeling van iOS heb je drie opties als het gaat om het maken van de gebruikersinterface van je applicatie.
Terwijl de eerste en tweede opties de meer populaire opties zijn, gaan we de voorbeeldtoepassing maken met behulp van de derde optie. Het is belangrijk om niet alleen te begrijpen hoe dit moet, maar ook om te begrijpen waarom de grafische hulpmiddelen zijn gemaakt.
Als u Visual Studio op een Windows-computer gebruikt om deze zelfstudie te volgen, komt u wanneer u het proces van het maken van het project start een dialoogvenster tegen waarin u wordt gevraagd om verbinding te maken met een Xamarin Bouw gastheer. Dit is een redelijk eenvoudig proces waarbij je alleen de aanwijzingen op de schermen hoeft te volgen. Het zal er ongeveer zo uitzien.
Het eerste dialoogvenster dat u ziet, is een instructievenster waarin wordt beschreven hoe u het programma kunt starten Xamarin Build Host op je Mac gebruiken Spotlight.
Open op uw Mac de Xamarin Build Host en klik op de Paar knop. Dit zal u voorzien van een PIN.
Schakel terug naar Visual Studio en klik op de Doorgaan metknop. Als uw Mac correct is geconfigureerd, moet deze in de lijst mogelijk worden weergegeven Xamarin Bouw hosts.
Klik op jouw Xamarin Build Host systeem van keuze en kiezen Aansluiten.
Visual Studio vraagt dan om de PIN. Nadat u de. Hebt ingevoerd PIN en heeft Visual Studio gekoppeld met uw Xamarin Build Host, je zult in staat zijn om samen met de rest van deze tutorial te volgen, niet alleen een iOS-applicatie te schrijven in C #, maar ook door Visual Studio te gebruiken. Geweldig.
Als u ooit deze moet verbinden Xamarin Build Host naar een ander systeem, kunt u klikken op de unpair knop. Nadat u dit hebt gedaan, moet u het proces voor het nieuwe systeem herhalen.
Gelukkig zal Visual Studio de Xamarin Build Host waarmee u eerder bent verbonden. Als je ontkoppeltVisual Studio van de Xamarin Build Host, de volgende keer dat u probeert een iOS-toepassing in Visual Studio te schrijven, vraagt deze om de PIN voor dezelfde build-host. Klik op om naar een andere host in Visual Studio te zoeken opties van de Hulpmiddelen menu en kies Xamarin> iOS-instellingen. Daar vind je een knop die zegt Zoek Mac Build Host. Dit toont het dialoogvenster om een ander te selecteren Xamarin Build Host.
Begin met het openen van uw IDE naar keuze en selecteren Bestand> Nieuw> Oplossing of project afhankelijk van de IDE die u gebruikt. Van de Nieuwe oplossing dialoogvenster, kies C #> iOS> iPhone uit de boomweergave en selecteer Leeg project als de sjabloon. Dit geeft je de basisstructuur voor je toepassing zonder alle toeters en bellen in de weg te zitten. Dit is hoe het eruit zal zien in Xamarin Studio 5.0.
U kunt elke gewenste naam aan uw oplossing geven, maar als u geïnteresseerd bent om met mij mee te gaan, geef het dan een naam Voeder. Zodra de oplossing / projectstructuur is gemaakt, ziet u een aantal bestanden die het waard zijn om in te zoomen op:
In de wereld van iOS, de AppDelegate
is de doorvoer naar uw toepassing vanaf het apparaat. Het wordt gebruikt voor het afhandelen van systeemevenementen die nodig zijn. De toepassingsdeelnemer houdt ook een verwijzing naar de venster
voorwerp. Elke iOS-applicatie heeft een venster, een instantie van de UIWindow
klasse, die wordt gebruikt om de gebruikersinterface van de toepassing te tekenen. De AppDelegate
is verantwoordelijk voor het abonneren op systeemgebeurtenissen die betrekking hebben op uw toepassing, bijvoorbeeld wanneer de toepassing is gestart of wanneer deze wordt beëindigd door het besturingssysteem.
Dit bestand lijkt op het gedeelte machtigingen van AndroidManifest. Het specificeert de rechten die de applicatie heeft, evenals de technologieën die het mag gebruiken. Enkele van de meer algemene technologieën zijn iCloud, PassKit, Push-meldingen, enz. U kunt denken aan een plist of eigenschappenlijst bestand als een woordenboek van sleutel / waarde-paren die eigenschappen opslaan die door uw toepassing worden gebruikt.
Net als bij het bestand Entitlements.plist worden in het bestand Info.plist sleutel / waarde-paren opgeslagen. Het verschil is dat dit bestand toepassingsinformatie opslaat, zoals de naam van de toepassing, pictogrammen, startafbeeldingen en meer.
Dit bestand bevat het belangrijkste toegangspunt voor uw toepassing. De Hoofd
methode maakt een nieuwe Xamarin.iOS-toepassing en specificeert de AppDelegate
dat zal omgaan met de gebeurtenissen verzonden door het besturingssysteem.
De eerste stap bij het maken van de voorbeeldtoepassing is het hebben van een object dat de informatie opslaat die u aan de gebruiker wilt weergeven. In dit geval wilt u informatie opslaan over artikelen die in de Xamarin RSS-blogfeed verschijnen. U kunt meer gegevens opslaan dan in het voorbeeld, maar hiermee kunt u aan de slag. Maak eerst een nieuwe klasse en noem die RssItem
. De definitie van de klasse zou er als volgt uit moeten zien:
public class RssItem public string Title get; vast te stellen; public string Creator get; vast te stellen; public DateTime PubDate get; vast te stellen; openbare string Link get; vast te stellen;
De klas is redelijk eenvoudig:
Titel
, een tekenreeks die de titel van het artikel vertegenwoordigtSchepper
, een tekenreeks die de auteur van het artikel vertegenwoordigtpubDate
, een Datum Tijd
die de publicatiedatum van het artikel vertegenwoordigenLink
, een tekenreeks die de directe koppeling naar het artikel vertegenwoordigtMet deze eenvoudige modelset kunnen we nu onze focus verleggen naar de gebruikersinterface en kernimplementatie van de toepassing.
Wanneer u iOS-applicaties maakt, hebt u geen andere keuze dan de. Te volgen Model-View-Controller paradigma. Zelfs als je niet begrijpt wat dat is, zul je aan het einde van het proces een MVC-soldaat zijn die iOS-applicaties afsluit zonder er zelfs maar aan te denken. Op een hoog niveau bestaat het MVC-patroon uit, je raadt het al, uit drie delen:
Je kunt denken aan de Model in het MVC-patroon als de belangrijkste componenten (of klassen) in uw applicatie die belangrijke bedrijfsgegevens / logica bevatten. In uw geval is het model het RssItem
klasse die u zojuist hebt gemaakt.
De Uitzicht in uw toepassing is de actuele visuele weergave van gegevens (of uw model) op het apparaat. Dit kan komen in de vorm van een lijst met gegevens of een aantal aangepaste componenten die de gegevens vertegenwoordigen die in uw Model.
In dit voorbeeld bestaat de weergavelaag uit een lijst met RssItem
objecten die zijn gedownload van de bovengenoemde feed. Idealiter is de Model en de Uitzicht zijn niet op de hoogte van elkaar en mogen niet direct communiceren. De twee stukjes van de puzzel moeten samen worden gehouden met een soort lijm.
De lijm die de Model en Uitzicht samen is het controleur. In de wereld van iOS-ontwikkeling ziet u meestal een controller in de vorm van een ViewController
klasse of subklasse. Deze klasse heeft de taak om de interactie tussen de Model en Uitzicht. De interactie kan plaatsvinden in de vorm van een gebruiker die een stukje van de Uitzicht en het bijwerken van de Model gebaseerd op die interactie of een deel van de Model wordt bijgewerkt door een ander proces achter de schermen en het updaten van Uitzicht gebaseerd op die verandering.
Als u het MVC-patroon in uw toepassing wilt implementeren, moet u een Uitzicht en een controleur. Voeg een nieuw item toe aan uw project door met de rechtermuisknop op uw project te klikken en te selecteren Voeg toe> Nieuw bestand (of Item afhankelijk van uw IDE). In de Nieuw bestand dialoogvenster, je moet de. selecteren iOS groep en de iPhone View Controller als het type en geef het een naam FeedItem
.
Dit proces voegt nieuwe bestanden toe aan uw project. Al deze bestanden hebben verschillende doelen, maar samen gaan ze uw lijstweergave opbouwen die de artikelen van de Xamarin-blog aan de gebruiker zal presenteren.
De FeedItemCell
is een klasse die de cellen (of rijen) van individuen in uw lijstweergave beschrijft. Met deze klasse kunt u het uiterlijk en de lay-out evenals de functionaliteit van alle cellen in de lijst wijzigen om het een aangepaste weergave te geven.
De bron van gegevens die wordt gevisualiseerd in uw lijst met FeedItemCell
objecten komen in de vorm van de FeedItemSource
klasse. Deze bronklasse bevat niet alleen de gegevens die in uw lijst worden weergegeven, maar bevat ook informatie over de lijst, waaronder de groeperingen, kopteksten, voetteksten en itemtellingen. Het behandelt ook de interacties met de items wanneer een gebruiker een van de items aanraakt.
Nogmaals, de eigenlijke controller is de lijm die alle dingen samenbindt. De FeedItemController
class is de containerklasse die de lijstweergave maakt voor de gebruiker om daadwerkelijk op het scherm te zien. Binnen deze klasse moet u de juiste gegevens ophalen om op het scherm weer te geven, een nieuw initialiseren FeedItemSource
met die gegevens en geef de bron door aan de controller.
Nu je alle stukjes van de puzzel bij de hand hebt, is het tijd om ze samen te stellen. Laten we beginnen met het doornemen van de drie bestanden die u net hebt gemaakt en ze gereed maken voor onze gegevens. Bekijk eerst de FeedItemCell
klasse en pas het aan om er zo uit te zien.
naamruimte Feeder openbare klasse FeedItemCell: UITableViewCell public static readonly NSString Key = new NSString ("FeedItemCell"); openbare FeedItemCell (): base (UITableViewCellStyle.Subtitle, Key) // TODO: subviews toevoegen aan de ContentView, verschillende kleuren instellen, etc. TextLabel.Text = "TextLabel";
Er gebeurt niet veel in deze klas en er is slechts een kleine verandering die je zult maken. Deze klasse gaat erven van UITableViewCell
. Al deze klasse bevat een constructor die de basisbouwer twee gegevensreeksen doorgeeft.
subtitel
stijl. Deze stijl maakt twee tekstvelden in de cel mogelijk, de een bovenop de andere.FeedItemCell
sleutel.Het volgende stukje van de puzzel is de FeedItemSource
klasse. Vervang de inhoud van de standaardimplementatie door het volgende:
naamruimte Feeder openbare klasse FeedItemSource: UITableViewSource private lijst_items; openbare FeedItemSource (lijst items) _items = items; openbare override int NumberOfSections (UITableView tableView) // TODO: retourneer het werkelijke aantal secties return 1; public override int RowsInSection (UITableView tableview, int section) // TODO: retourneer het werkelijke aantal items in de sectie return _items.Count; openbare override UITableViewCell GetCell (UITableView tableView, NSIndexPath indexPath) var cell = tableView.DequeueReusableCell (FeedItemCell.Key) als FeedItemCell; if (cell == null) cell = new FeedItemCell (); // TODO: vul de cel met de juiste gegevens op basis van de indexPath-cel.TextLabel.Text = _items [indexPath.Row] .Title; cell.DetailTextLabel.Text = string.Format ("0 on 1", _items [indexPath.Row] .Creator, _items [indexPath.Row] .PubDate); terugkeer cel; openbare override void RowSelected (UITableView tableView, NSIndexPath indexPath) var item = _items [indexPath.Row]; var url = nieuwe NSUrl (item.Link); UIApplication.SharedApplication.OpenUrl (url);
Laten we het afbreken om een beter inzicht te krijgen in wat er gebeurt. De bron heeft de gegevens nodig die in de lijst worden weergegeven en die doorgaans in de constructor worden verwerkt.
privélijst_items; openbare FeedItemSource (lijst items) _items = items;
De brongegevens in uw lijst worden geleverd door een lijst met uw modelklassen, RssItem
. Deze lijst met items wordt doorgegeven aan de constructor van de FeedItemSource
klasse en vastgehouden in een privévariabele _items
.
public override int NumberOfSections (UITableView tableView) // TODO: retourneer het werkelijke aantal secties return 1;
Wanneer u lijsten gebruikt in een iOS-applicatie, hebt u de optie om cellen in secties te groeperen. De NumberOfSections
methode geeft als resultaat hoeveel secties of groepen in de lijst zijn gevonden. In deze specifieke toepassing is er één enkele groep die alle items bevat, wat betekent dat de methode terugkeert 1
.
public override int RowsInSection (UITableView tableview, int section) // TODO: retourneer het werkelijke aantal items in de sectie return _items.Count;
Aangezien het aantal secties van de lijst is gedefinieerd, moet de tabelweergave weten hoeveel items in elke sectie worden gevonden. Je hebt de lijst met RssItem
objecten die in de lijst in de constructor zullen verschijnen en die in de privévariabele zijn opgeslagen _items
, dus alles wat je hoeft te doen is terugkeren _items.Count
.
public override UITableViewCell GetCell (UITableView tableView, NSIndexPath indexPath) var cell = tableView.DequeueReusableCell (FeedItemCell.Key) als FeedItemCell; if (cell == null) cell = new FeedItemCell (); // TODO: vul de cel met de juiste gegevens op basis van de indexPath-cel.TextLabel.Text = _items [indexPath.Row] .Title; cell.DetailTextLabel.Text = string.Format ("0 on 1", _items [indexPath.Row] .Creator, _items [indexPath.Row] .PubDate); terugkeer cel;
Het volgende, en misschien wel het belangrijkste, onderdeel van de bronimplementatie is de GetCell
methode. Het doel van deze methode is om de cellen die in de lijst aanwezig zijn, te produceren en opnieuw te gebruiken.
var cell = tableView.DequeueReusableCell (FeedItemCell.Key) als FeedItemCell; if (cell == null) cell = new FeedItemCell ();
De eerste regel roept de DequeueReusableCell
methode die in een argument van de Sleutel
van een cel waarnaar hij op zoek is. Een van de ideeën achter een lijst is dat als de brongegevens meer items bevatten dan in het zichtbare deel van het scherm passen, er geen reden is om continu die cellen te maken en systeembronnen te gebruiken.
In plaats daarvan, wanneer een cel van het scherm gaat, wordt deze niet eenvoudigweg weggegooid. Het is in een pool van andere cellen geplaatst voor later gebruik. Later, wanneer een cel met een bepaalde sleutel nodig is, controleert het systeem eerst de pool van herbruikbare cellen voor cellen met die sleutel. Als er geen herbruikbare cel kan worden gevonden, is de celvariabele nul
, en een nieuwe FeedItemCell
is gecreëerd.
cell.TextLabel.Text = _items [indexPath.Row] .Title; cell.DetailTextLabel.Text = string.Format ("0 on 1", _items [indexPath.Row] .Creator, _items [indexPath.Row] .PubDate); terugkeer cel;
Als een cel gereed is voor gebruik, moet deze worden gevuld met gegevens. Hoe je dit doet, is helemaal aan jou. In ons voorbeeld hebben we aangegeven dat elke cel van de is subtitel
type, wat betekent dat het twee labels heeft. De top Label
wordt de TextLabel
. In ons voorbeeld is het gevuld met de Titel
eigendom van een RssItem
voorwerp. Om het juiste te halen RssItem
object maken we gebruik van de indexPath.Row
eigendom. De onderkant Label
wordt de DetailTextLabel
en wordt bevolkt met een aaneenschakeling van de Schepper
en pubDate
eigenschappen van de overeenkomstige RssItem
voorwerp.
openbare overschrijving ongeldig RowSelected (UITableView tableView, NSIndexPath indexPath) var item = _items [indexPath.Row]; var url = nieuwe NSUrl (item.Link); UIApplication.SharedApplication.OpenUrl (url);
De laatste override
methode binnen de FeedItemSource
klasse is RowSelected
. Deze methode wordt elke keer dat een cel in de lijst wordt aangebeld door de gebruiker opgeroepen. In dit geval, wanneer een gebruiker een cel aanraakt, haalt u de overeenkomstige op RssItem
bijvoorbeeld met behulp van de indexPath.Row
eigendom. U maakt vervolgens een nieuw NSURL
object met de Link
eigendom van de RssItem
object en passeer dat NSURL
naar de UIApplication.SharedApplication.OpenUrl
methode. Deze methode bepaalt welke toepassing op het apparaat of de emulator het best geschikt is om de URL te verwerken. In ons voorbeeld, omdat de URL een webadres vertegenwoordigt, zal de ingebouwde browser van het apparaat of de simulator het verzoek afhandelen.
Het is tijd om onze aandacht te richten op de FeedItemController
klasse.
namespace Feeder openbare klasse FeedItemController: UITableViewController private lijst_items; openbare 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 = (van item in doc.Descendants ("item") selecteer nieuw RssItem Title = item.Element ("title"). Waarde, PubDate = DateTime.Parse (item.Element ("pubDate"). Waarde), Maker = item.Element (dc + "creator"). Waarde, Link = item.Element ("link"). Waarde). ToList (); openbare overschrijving ongeldig DidReceiveMemoryWarning () // Geeft de weergave vrij als deze geen superview heeft. base.DidReceiveMemoryWarning (); // Ontgrendel eventueel gecachte gegevens, afbeeldingen, enz. Die niet in gebruik zijn. public async override void ViewDidLoad () base.ViewDidLoad (); // Registreer de gegevensbron van TableView TableView.Bron = nieuwe FeedItemSource (_items);
Voordat u deze code met succes kunt compileren, moet u een verwijzing toevoegen naar de System.Xml.Linq
bijeenkomst. U kunt dit doen door met de rechtermuisknop op te klikken Referenties in uw project en een van beide selecteren Referentie toevoegen of Bewerk verwijzingen, afhankelijk van de IDE die u gebruikt. U moet ook het gebruik System.Xml.Linq;
statement naar de top van het klassenbestand.
privélijst_items; openbare 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 = (van item in doc.Descendants ("item") selecteer nieuw RssItem Title = item.Element ("title"). Waarde, PubDate = DateTime.Parse (item.Element ("pubDate"). Waarde), Maker = item.Element (dc + "creator"). Waarde, Link = item.Element ("link"). Waarde). ToList ();
Dit is waar alle logica voor het ophalen van de gegevens uit de Xamarin RSS-blog feed leeft. Als je de Android-versie van de introductie tot Xamarin-zelfstudie hebt gevolgd, ziet dit er waarschijnlijk bekend uit. Dat komt omdat het exact dezelfde code is.
U begint met het maken van een HttpClient
en gebruik de GetStringAsync
methode om de gegevens te downloaden die bij de geleverde url worden gevonden en gebruik de ontleden
methode op de XDocument
klasse om de gegevens voor te bereiden voor sommige Linq-to-Xml-magie. Zodra u de XDocument
object, kunt u hiernaar vragen om de waarden van alle onderliggende itemelementen in de RSS-feed op te halen en exemplaren van de. te initialiseren RssItem
klasse en sla ze op in de privésfeer _items
veranderlijk.
Na de constructor zijn er slechts twee methoden aanwezig in de implementatie. Die methoden zijn DidReceiveMemoryWarning
en viewDidLoad
. U hoeft niets te doen met de eerste methode, maar zoals de meeste dingen loont het om op zijn minst te weten waarvoor het is.
De DidReceiveMemoryWarning
methode wordt op elk moment binnen de uitvoering van deze klasse aangeroepen wanneer het apparaat of de simulator heeft vastgesteld dat uw toepassing mogelijk te veel geheugen in beslag neemt en mogelijk kan worden beëindigd. Dit is jouw kans om geheugenintensieve bronnen vrij te geven om dat te voorkomen. Zoals de naam al aangeeft, is de viewDidLoad
methode wordt aangeroepen wanneer het beeld wordt geladen en voordat het wordt gepresenteerd door de gebruiker.
public async override void ViewDidLoad () base.ViewDidLoad (); // Registreer de gegevensbron van TableView TableView.Bron = nieuwe FeedItemSource (_items);
In deze methode noemen we de basismethode van viewDidLoad
en maak een nieuw exemplaar van de FeedItemSource
klasse, toewijzen aan de TableView.Source
eigendom. Zodra dit is gebeurd, kan de gebruiker de gegevens bekijken die u uit de RSS-feed hebt opgehaald en in de lijstweergave hebt geplaatst. Als je in de war bent waar het TableView
eigendom komt van, het is overgenomen van de FeedItemController
basisklasse, UITableViewController
. Deze basisklasse biedt een verwijzing naar de werkelijke tabelweergave die in de weergave van de view-controller staat.
Je hebt nu alle benodigde stukjes om een lijst met artikelen aan de gebruiker te presenteren. Het enige probleem is dat er nog niets van te zien is. De reden is dat uw toepassing niet is verteld om de FeedItemController
om de gegevens aan de gebruiker te tonen. Om dit te doen, moet je een kleine wijziging aanbrengen in je AppDelegate
klasse.
De AppDelegate
klasse bevat momenteel één methode, FinishedLaunching
. Deze methode wordt door het besturingssysteem opgeroepen door de toepassingsdeelnemer. Om alles te laten werken, moeten we de implementatie enigszins wijzigen.
public override bool FinishedLaunching (UIApplication-app, NSDictionary-opties) // maak een nieuw vensterinstantie gebaseerd op het schermgroottevenster = nieuw UIwindow (UIScreen.MainScreen.Bounds); var-controller = nieuwe FeedItemController (); controller.View.BackgroundColor = UIColor.White; controller.Title = "Xamarin Feeds"; var navController = new UINavigationController (controller); window.RootViewController = navController; // Maak het venster zichtbaar venster. MakeKeyAndVisible (); geef waar terug;
De eerste vier regels zijn redelijk standaard. U maakt een nieuw exemplaar van de UIWindow
klasse, die de gebruikersinterface van uw toepassing bevat. Vervolgens maakt u een nieuw exemplaar van de FeedItemController
klasse en stel het in Achtergrond kleur
eigendom aan UIColor.White
en geef het een Titel
.
De volgende twee regels lijken misschien een beetje verwarrend. U maakt een nieuw exemplaar van a UINavigationController
, geef het door FeedItemController
Bijvoorbeeld in de constructor, stel de RootViewController
eigendom van de venster
bezwaar tegen de UINavigationController
, en bel MakeKeyAndVisible
. Waarom moeten we dit doen? Waarom kunnen we niet de RootViewController
naar de FeedItemController
en noem het een dag? U kunt dat doen en uw toepassing zal nog steeds werken. Als u dat echter doet, wordt de statusbalk boven aan het scherm bovenaan uw lijst weergegeven en ziet deze er slecht uit. Uw controller toevoegen aan een UINavigationController
is een kleine truc die twee dingen volbrengt:
Titel
eigenschap van de controller zichtbaarHet is tijd om je applicatie te bouwen en uit te voeren in de iOS Simulator. Het resultaat zou moeten lijken op het onderstaande screenshot.
En daar heb je het. U hebt zojuist met succes een volledig functionele iOS-applicatie gemaakt met alleen C # en Xamarin. Dat is een behoorlijk indrukwekkende prestatie als je erover nadenkt.
Ik hoop dat dit je het vertrouwen en de drive geeft om dieper in het rijk van Xamarin te duiken en de deuren die het voor je opent. Hier kunt u informatie krijgen over het maken van Android-apps in C # met Xamarin, als u dit nog niet hebt gedaan. Als dit het geval is, kunt u verkennen hoe u platformonafhankelijke toepassingen kunt maken die het grootste deel van een enkele codebasis opnieuw kunnen gebruiken en zowel op iOS- als Android-apparaten kunnen worden gebruikt. Dat is wat ik je in de volgende tutorial laat z