O introducere în Xamarin Partea 2

1. Noțiuni de bază

Dacă ați urmat împreună cu prima parte a acestui tutorial, probabil că deja știți că procesul de instalare al Xamarin nu este prea complicat. Xamarin a creat un instalator foarte frumos, care face cea mai mare parte a cerințelor de verificare pentru tine și trebuie doar să bifați câteva casete și faceți clic pe Următor →. În timp ce procesul de pornire și funcționare a Xamarin.iOS este destul de similar, vor exista câteva diferențe în funcție de platforma pe care o dezvoltați, OS X sau Windows.

Listă de verificare

Veți găsi rapid că procesul de creare a aplicațiilor iOS în C # este puțin mai implicat decât procesul Android. Nu este pentru că SDK este mai greu de înțeles, dar există și alte câteva părți în mișcare. Pentru a finaliza acest tutorial și pentru a putea crea cu succes aplicații iOS în C #, veți avea nevoie de următoarele:

  1. un Mac, indiferent dacă utilizați sau nu Visual Studio pe un PC
  2. Xcode
  3. cel mai recent SDK pentru iOS
  4. cel mai recent SDK Xamarin.iOS
  5. un cont de dezvoltator Apple
  6. un PC, dacă doriți să dezvoltați utilizând Visual Studio

Dacă veniți din partea Windows a lumii, este posibil să fiți puțin supărat de faptul că aveți nevoie de un Mac și Xcode. Realitatea este că, indiferent de instrumentele și limbile pe care le utilizați pentru a crea aplicația iOS, numai Xcode are capabilitățile de a crea versiunea distribuită finală iOS (.ipa) și Xcode rulează numai pe un Mac. Crede-mă, cu cât vei accepta mai devreme acest lucru, cu atât mai repede te vei bucura de restul procesului.

2. Instalarea

Dacă ați urmat împreună cu prima parte a acestui tutorial, probabil că aveți deja o înțelegere destul de bună cu privire la procesul de instalare Xamarin. Pașii implicați pentru instalarea Xamarin.iOS sunt similare cu cele ale Xamarin.Android. Dar dacă nu ați citit tutorialul anterior, atunci următoarea secțiune va acoperi toate etapele implicate.

Pasul 1: Xcode și SDK-ul iOS

Indiferent de ce platformă intenționați să faceți dezvoltarea dvs., va trebui să aveți cea mai recentă versiune atât a Xcode cât și a SDK-ului iOS. Principalul motiv pentru care veți avea nevoie de Xcode este pentru procesul de construire.

În primul rând, mergeți la iOS Dev Center și creați un cont dacă nu aveți deja unul. Puteți ocoli acest pas și puteți merge direct la Mac App Store pentru a descărca Xcode, dar dacă intenționați să rulați aplicația pe un dispozitiv fizic, atunci veți avea nevoie de un cont de dezvoltator oricum, deci puteți face și acum.

Odată creat, conectați-vă și navigați la pagina Descărcări pentru a obține cea mai recentă versiune de Xcode. Vă va duce la Mac App Store pentru a finaliza procesul de descărcare și instalare. Acest lucru vă va oferi nu numai cea mai recentă versiune a Xcode, dar va descărca și instala ultima versiune a SDK-ului iOS. Dulce.

Acest tutorial nu va trece în detaliu despre procesul de furnizare și implementarea aplicației dvs. pe un dispozitiv. Există și alte articole despre Tuts + care acoperă acest subiect, precum și documentația pe site-ul Xamarin dacă doriți să faceți acest lucru.

Pasul 2: Xamarin.iOS și Studio Xamarin

Puteți să distrugeți două păsări cu o singură piatră, îndreptându-se spre pagina Descărcare Xamarin, creând un cont dacă nu aveți deja unul și faceți clic Descărcați Xamarin. Aceasta va descărca programul de instalare Xamarin, care va avea grijă de verificarea, descărcarea și instalarea tuturor cerințelor prealabile pentru dvs. Faceți dublu clic pe .dmg fișier pentru a începe instalarea.

După ce începe instalarea, puteți selecta piesele pe care doriți să le instalați. Veți avea nevoie doar de opțiunea Xamarin.iOS pentru acest tutorial, dar nu ezitați să instalați cât mai mult sau mai puțin decât doriți.

Acest ecran poate să pară puțin diferit de mașina dvs., în funcție de sistemul de operare pe care îl utilizați, precum și de produsele pe care le-ați instalat deja sau nu. După cum am menționat mai înainte, va trebui să finalizați acest proces pe un Mac dacă faceți o dezvoltare pe un PC. O parte din instalarea Xamarin.iOS este Xamarin Build Host care vă permite să vă conectați la Mac pe rețeaua de pe un PC și să creați .ipa pachetul care rulează pe Simulatorul iOS sau pe un dispozitiv fizic.

Odată ce toate pachetele au fost descărcate și instalate, dacă faceți o dezvoltare pe un Mac, puteți porni Xamarin Studio. Dacă intenționați să vă dezvoltați pe un PC, atunci va trebui să urmăriți același proces de instalare pentru a obține toți biții necesari Xamarin.iOS, precum și pluginul Xamarin pentru Visual Studio pe mașina dvs. Windows.

Pentru a face acest lucru, totuși, va trebui să aveți cel puțin Business Edition al Xamarin. Puteți obține tot ce aveți nevoie în timpul procesului gratuit de 30 de zile al Xamarin, dacă nu îl aveți deja. Dacă nu aveți acces la versiunea gratuită sau la software-ul complet, va trebui să utilizați Xamarin Studio pe Mac.

3. Construirea unei aplicații simple

Cea mai bună modalitate de a învăța cu adevărat o nouă tehnologie de orice fel este de a săpa și de a crea ceva de la zero. Puteți crea această aplicație fie în IDE (Integrated Development Environment), tot ce trebuie să faceți este să urmați împreună cu exemplul de cod.

În epoca modernă de dezvoltare iOS, aveți trei opțiuni atunci când vine vorba de crearea interfeței de utilizator a aplicației.

  1. creați vederi individuale și le legați împreună în cod
  2. utilizați Storyboards, care este o versiune mai grafică a primei opțiuni
  3. crea interfața de utilizator în cod

În timp ce primele și cele de-a doua opțiuni sunt opțiunile mai populare, vom crea o mostră de aplicație folosind a treia opțiune. Este important să înțelegem nu numai cum să procedăm, ci și să înțelegem de ce au fost create instrumentele grafice.

Pasul 1: Utilizarea Visual Studio pe Windows

Dacă utilizați Visual Studio pe o mașină Windows pentru a urma acest tutorial, atunci când începeți procesul de creare a proiectului, veți rula într-un dialog care vă cere să vă conectați la Xamarin Construiți gazdă. Acesta este un proces destul de simplu în care trebuie doar să urmați instrucțiunile de pe ecrane. Va arăta așa.

Primul dialog veți vedea este o fereastră de instrucțiuni care descrie cum să porniți Xamarin Build Host pe calculatorul dvs. Mac Reflector.

Pe Mac, deschideți-l Xamarin Build Host și faceți clic pe Pereche buton. Acest lucru vă va oferi o PIN.

Reveniți la Visual Studio și faceți clic pe Continuabuton. Dacă sistemul dvs. Mac este configurat corect, ar trebui să apară în listă ca posibil Xamarin Construiți gazdele.

Faceți clic pe dvs. Xamarin Build Host sistem de alegere și alege Conectați.

Visual Studio va cere apoi PIN. Odată ce ați intrat PIN și a asociat Visual Studio cu dvs. Xamarin Build Host, veți putea să urmăriți împreună cu restul acestui tutorial, nu numai să scrieți o aplicație iOS în C #, ci și să o faceți folosind Visual Studio. Minunat.

Dacă vreodată trebuie să conectați acest lucru Xamarin Build Host la un alt sistem, puteți face clic pe desperecheaţi buton. După aceasta, va trebui să repetați procesul pentru noul sistem.

Din fericire, Visual Studio își va aminti Xamarin Build Host cu care v-ați conectat anterior. Dacă dezarhivațiVisual Studio din Xamarin Build Host, data viitoare când încercați să scrieți o aplicație iOS în Visual Studio, aceasta vă va cere PIN pentru aceeași gazdă construită. Pentru a căuta altă gazdă în Visual Studio, faceți clic pe Opțiuni de la Unelte meniu și alegeți Xamarin> Setări iOS. Acolo veți găsi un buton care spune Găsiți gazdă pentru construirea unui Mac. Aceasta va afișa dialogul pentru a selecta un altul Xamarin Build Host.

Pasul 2: Crearea proiectului

Începeți prin a deschide IDE-ul ales și selectați-l Fișier> Nou> Soluție sau Proiect în funcție de IDE pe care îl utilizați. De la Noua soluție caseta de dialog, alegeți C #> iOS> iPhone din vizualizarea arborescentă și selectați Proiect gol ca șablon. Acest lucru vă va oferi structura de bază pentru aplicația dvs., fără ca toate clopoțelurile și fluierurile să vă ajungă în cale. Aspectul va arata astfel in Xamarin Studio 5.0.

Puteți da soluției dvs. orice nume doriți, dar dacă sunteți interesat să urmați cu mine, atunci numele fider. Odată ce structura soluție / proiect este creată, veți vedea un număr de fișiere care merită să măriți:

  1. AppDelegate.cs
  2. Entitlements.plist
  3. Info.plist
  4. Main.cs

AppDelegate.cs

În lumea iOS, AppDelegate este conducta aplicației dvs. de pe dispozitiv. Acesta este folosit pentru a gestiona orice evenimente de sistem care sunt necesare. Delegatul aplicației păstrează, de asemenea, o referință la fereastră obiect. Fiecare aplicație iOS are o fereastră, o instanță a UIWindow , care este folosit pentru a desena interfața utilizator a aplicației. AppDelegate este responsabil pentru abonarea la orice evenimente de sistem legate de aplicația dvs., de exemplu, când aplicația termină lansarea sau când este terminată de sistemul de operare.

Entitlements.plist

Acest fișier este similar cu secțiunea de permisiuni a aplicației AndroidManifest. Specifică permisiunile pe care le are aplicația, precum și tehnologiile pe care le este permis să le utilizeze. Unele dintre cele mai frecvente tehnologii includ iCloud, PassKit, Push Notifications, etc. Vă puteți gândi la a plist sau lista de proprietăți fișier ca dicționar al perechilor cheie-valoare care stochează proprietățile utilizate de aplicația dvs..

Info.plist

Similar cu fișierul Entitlements.plist, fișierul Info.plist stochează perechi cheie-valoare. Diferența este că acest fișier stochează informații despre aplicație, cum ar fi numele aplicației, pictogramele, imagini de lansare și multe altele.

Main.cs

Acest fișier conține punctul principal de intrare pentru aplicația dvs. Principal metoda creează o nouă aplicație Xamarin.iOS și specifică AppDelegate care va gestiona evenimentele trimise de sistemul de operare.

Pasul 3: Crearea modelului

Primul pas în crearea aplicației probă este crearea unui obiect care să stocheze utilizatorului informațiile pe care doriți să le afișați. În acest caz, doriți să stocați informații despre articolele care apar pe feed-ul blogului Xamarin RSS. Puteți stoca mai multe date decât exemplul, dar acest lucru vă va face să începeți. Mai întâi, creați o nouă clasă și denumiți-o RssItem. Definiția clasei ar trebui să arate astfel:

clasa publică RssItem public string Titlu get; a stabilit;  șirul public Creator get; a stabilit;  public DateTime PubDate get; a stabilit;  șir public public Link get; a stabilit; 

Clasa este destul de simplă:

  • Titlu, un șir reprezentând titlul articolului
  • Creator, un șir reprezentând autorul articolului
  • PubDate, A DateTime reprezentând data publicării articolului
  • Legătură, un șir reprezentând o legătură directă cu articolul

Cu acest set simplu de modele, putem acum să ne concentrăm atenția asupra interfeței utilizator și asupra punerii în aplicare a aplicației.

Pasul 4: Model-View-Controller

Când creați aplicații iOS, nu aveți de ales decât să urmați Model-View-Controller paradigmă. Chiar dacă nu înțelegeți ce înseamnă asta, până la sfârșitul procesului veți fi un soldat MVC care se va conecta la aplicații iOS fără să se gândească chiar la asta. La un nivel înalt, modelul MVC este alcătuit din, ați ghicit, trei părți:

Model

Vă puteți gândi la Model în modelul MVC ca principalele componente (sau clase) din aplicația dvs. care conțin date / logică de afaceri importante. În cazul tău, modelul este RssItem clasa pe care tocmai ați creat-o.

Vedere

Vedere în aplicația dvs. este reprezentarea vizuală reală a datelor (sau a modelului dvs.) pe dispozitiv. Aceasta poate apărea sub forma unei liste de date sau a unor componente personalizate care reprezintă datele găsite în site-ul dvs. Model.

În acest exemplu, stratul de vizualizare va consta dintr-o listă de RssItem obiecte care au fost descărcate din feedul menționat mai sus. În mod ideal, Model si Vedere nu sunt conștienți unul de altul și nu ar trebui să interacționeze direct. Cele două piese ale puzzle-ului trebuie să fie ținute împreună cu un fel de adeziv.

Controlor

Adezivul care leagă Model și Vedere împreună, este Controlor. În lumea dezvoltării iOS veți vedea de obicei un controler sub forma unui a ViewController clasa sau subclasa. Această clasă are misiunea de a controla interacțiunea dintre Model și Vedere. Interacțiunea poate veni sub forma utilizatorului care atinge o bucată din Vedere și actualizarea Model bazată pe acea interacțiune sau pe o anumită parte din Model fiind actualizat printr-un alt proces în spatele scenei și actualizând Vedere pe baza acestei schimbări.

Pentru a implementa modelul MVC în aplicația dvs., trebuie să creați un Vedere și a Controlor. Adăugați un element nou în proiect făcând clic dreapta pe proiectul dvs. și selectând Adăugați> Fișier nou (sau Articol în funcție de IDE-ul dvs.). În Dialog nou pentru fișiere, va trebui să selectați iOS și grupul iPhone View Controller ca tip și să-i dea un nume de FeedItem.

Acest proces vă va adăuga noi fișiere în proiectul dvs. Toate aceste fișiere au scopuri diferite, dar, împreună, vor construi vizualizarea listei care va prezenta utilizatorilor articolele din blogul Xamarin.

FeedItemCell.cs

FeedItemCell este o clasă care descrie celulele individuale (sau rânduri) din vizualizarea listei. Această clasă vă va permite să modificați aspectul și aspectul, precum și funcționalitatea tuturor celulelor din listă pentru a vă oferi un aspect personalizat.

FeedItemSource.cs

Sursa de date care este vizualizată în lista dvs. de FeedItemCell obiecte vine sub forma FeedItemSource clasă. Această clasă sursă nu conține numai datele care vor fi vizualizate în lista dvs., dar conține, de asemenea, informații despre listă, inclusiv grupările, anteturile, subsolurile și numărul de elemente. De asemenea, se ocupă de interacțiunile cu elementele când un utilizator atinge una dintre ele.

FeedItemController.cs

Încă o dată, controlerul real este cleiul care leagă toate lucrurile împreună. FeedItemController clasa este clasa de containere care va crea vizualizarea listei pentru ca utilizatorul să se poată vedea pe ecran. În cadrul acestei clase, va trebui să obțineți datele corespunzătoare pentru a fi afișate pe ecran, inițializați un nou FeedItemSource cu acele date și să treacă sursa la controler.

Pasul 5: Trecerea la cod

Acum că aveți toate piesele puzzle-ului gata, este timpul să le puneți împreună. Să începem să lucrăm prin cele trei fișiere pe care tocmai le-ați creat și să le pregătim pentru datele noastre. În primul rând, aruncați o privire la FeedItemCell clasificați-o și modificați-o pentru a arăta astfel.

namespace Feeder clasă publică FeedItemCell: UITableViewCell public static readonly NSString Key = nou NSString ("FeedItemCell"); public FeedItemCell (): base (UITableViewCellStyle.Subtitle, Key) // TODO: adăugați subviews la ContentView, setați diferite culori etc. TextLabel.Text = "TextLabel"; 

În această clasă nu se întâmplă prea multe și există doar o mică schimbare pe care o veți face. Această clasă va moșteni de la UITableViewCell. Toate aceste clase conține este un constructor care cheamă constructorul de bază să treacă în două bucăți de date.

  • Primul este stilul celulei. În acest exemplu, folosim un stil încorporat cunoscut ca Subtitlu stil. Acest stil permite două câmpuri de text din celulă, una deasupra celeilalte.
  • Al doilea parametru al constructorului de bază este cheia care va reprezenta acest tip de celulă din listă. În acest caz, fiecare celulă din listă va fi menționată de către FeedItemCell cheie.

Următoarea piesă a puzzle-ului este FeedItemSource clasă. Înlocuiți conținutul implementării implicite cu următoarele:

namespace Feeder public class FeedItemSource: UITableViewSource list privat _items; public FeedItemSource (Listă articole) _items = elemente;  public override int NumberOfSections (UITableView tableView) // TODO: returneaza numarul efectiv de sectiuni return 1;  public override int RowsInSection (vizualizare table UITableView, secțiune int) // TODO: returnează numărul real de elemente din secțiunea returnează _items.Count;  suprascrie public UITableViewCell GetCell (UITableView tableView, NSIndexPath indexPath) var celula = tableView.DequeueReusableCell (FeedItemCell.Key) ca FeedItemCell; dacă (celula == null) cell = new FeedItemCell (); // TODO: să populeze celula cu datele corespunzătoare bazate pe indexul cell.TextLabel.Text = _items [indexPath.Row] .Title; cell.DetailTextLabel.Text = șir.Format ("0 pe 1", _items [indexPath.Row] .Creator, _items [indexPath.Row] .PubDate); celule retur;  suprascrie public void RowSelected (UITableView tableView, NSIndexPath indexPath) var item = _items [indexPath.Row]; var url = nou NSUrl (element.Link); UIApplication.SharedApplication.OpenUrl (url); 

Să ne descurcăm pentru a înțelege mai bine ce se întâmplă. Sursa are nevoie de datele care vor fi afișate în listă și care este de obicei tratată în constructor.

Lista privată _items; public FeedItemSource (Listă articole) _items = elemente; 

Datele sursă din lista dvs. vor fi furnizate de o listă a claselor dvs. de model, RssItem. Această listă de elemente este trecută în constructorul FeedItemSource clasă și menținută într-o variabilă privată _items

public suprascrie int NumberOfSections (UITableView tableView) // TODO: returneaza numarul efectiv de sectiuni return 1; 

Când utilizați liste într-o aplicație iOS, aveți opțiunea de a grupa celulele în secțiuni. NumberOfSections metoda returnează numărul de secțiuni sau grupuri din listă. În această aplicație particulară, există un singur grup care conține toate elementele, ceea ce înseamnă că metoda revine 1.

public override int RowsInSection (vizualizare tabelă UITableView, secțiune int) // TODO: returnează numărul efectiv de elemente din secțiunea returnează _items.Count; 

Cu numărul de secțiuni din lista definită, vizualizarea tabelului trebuie să știe câte elemente se găsesc în fiecare secțiune. Ați trecut deja lista cu RssItem obiecte care vor apărea în listă în constructor și le-au salvat în variabila privată _items, astfel încât tot ce trebuie să faceți este să vă întoarceți _items.Count.

suprascriere publică UITableViewCell GetCell (UITableView tableView, NSIndexPath indexPath) var celula = tableView.DequeueReusableCell (FeedItemCell.Key) ca FeedItemCell; dacă (celula == null) cell = new FeedItemCell (); // TODO: să populeze celula cu datele corespunzătoare bazate pe indexul cell.TextLabel.Text = _items [indexPath.Row] .Title; cell.DetailTextLabel.Text = șir.Format ("0 pe 1", _items [indexPath.Row] .Creator, _items [indexPath.Row] .PubDate); celule retur; 

Următoarea, și probabil cea mai importantă, parte din implementarea sursei este GetCell metodă. Scopul acestei metode este de a produce și reutiliza celulele prezente în listă.

var cell = tableView.DequeueReusableCell (FeedItemCell.Key) ca FeedItemCell; dacă (celula == null) cell = new FeedItemCell ();

Prima linie sună DequeueReusableCell metoda care trece într - un argument al Cheie a unei celule pe care o caută. Una dintre ideile din spatele unei liste este că, dacă datele sursă conțin mai multe elemente decât cele care se potrivesc în secțiunea vizibilă a ecranului, nu există niciun motiv pentru a crea acele celule continuu și pentru a prelua resursele de sistem.

În schimb, atunci când o celulă se oprește, nu este pur și simplu eliminată. Este plasat într-un bazin de alte celule pentru utilizare ulterioară. Mai târziu, când este necesară o celulă cu o anumită cheie, sistemul verifică mai întâi grupul de celule reutilizabile pentru celulele respective. Dacă nu s-ar găsi o celulă reutilizabilă, variabila celulară este nul, și un nou FeedItemCell este creat.

cell.TextLabel.Text = _items [indexPath.Row]. Titlu; cell.DetailTextLabel.Text = șir.Format ("0 pe 1", _items [indexPath.Row] .Creator, _items [indexPath.Row] .PubDate); celule retur;

Dacă o celulă este gata să fie utilizată, trebuie să fie populată cu date. Cum faceți acest lucru depinde complet de dvs. În exemplul nostru, am specificat că fiecare celulă este de Subtitlu tip, ceea ce înseamnă că are două etichete. Topul Eticheta este denumită TextLabel. În exemplul nostru, este populat cu Titlu proprietatea unui RssItem obiect. Pentru a prelua corect RssItem obiect, facem uz de indexPath.Row proprietate. Fundul Eticheta este denumită DetailTextLabel și este populat cu o concatenare a Creator și PubDate proprietățile corespunzătoare RssItem obiect.

public suprascrie void RowSelected (UITableView tableView, NSIndexPath indexPath) var item = _items [indexPath.Row]; var url = nou NSUrl (element.Link); UIApplication.SharedApplication.OpenUrl (url); 

Finala trece peste metoda în cadrul FeedItemSource clasa este RowSelected. Această metodă se numește de fiecare dată când o celulă din listă este utilizată de utilizator. În acest caz, atunci când un utilizator atinge o celulă, preluați textul corespunzător RssItem instanță folosind indexPath.Row proprietate. Apoi creați un nou NSUrl obiect cu Legătură proprietate a RssItem obiect și treci asta NSUrl la UIApplication.SharedApplication.OpenUrl metodă. Această metodă va determina ce aplicație pe dispozitiv sau emulator este cea mai potrivită pentru manipularea adresei URL. În exemplul nostru, deoarece url reprezintă o adresă web, browserul încorporat al dispozitivului sau simulatorul va gestiona solicitarea.

Este timpul să ne îndreptăm atenția asupra FeedItemController clasă.

namespace Feeder public class FeedItemController: UITableViewController list privat _items; public FeedItemController (): base () folosind (var client = nou 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 = (de la elementul din doc.Descendants ("item") selectați noi RssItem Title = item.Element ("title"). = element.Element (dc + "creator"). Valoare, Link = item.Element ("link") Valoare) ToList ();  suprascrie public void DidReceiveMemoryWarning () // Eliberează vizualizarea dacă nu are supervizare. base.DidReceiveMemoryWarning (); // Eliberați toate datele stocate în cache, imagini etc. care nu sunt utilizate.  suprascrie async public void ViewDidLoad () base.ViewDidLoad (); // Înregistrați sursa de date TableView TableView.Source = FeedItemSource nou (_items); 

Înainte de a putea compila cu succes acest cod, va trebui să adăugați o referință la System.Xml.Linq asamblare. Puteți face acest lucru făcând clic dreapta Referințe în proiectul dvs. și selectați fie Adăugați o referință sau Editați referințele, în funcție de IDE pe care îl utilizați. Va trebui, de asemenea, să adăugați folosind System.Xml.Linq; declarație în partea de sus a fișierului de clasă. 

Lista privată _items; public FeedItemController (): base () folosind (var client = nou 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 = (de la elementul din doc.Descendants ("item") selectați noi RssItem Title = item.Element ("title"). = element.Element (dc + "creator"). Valoare, Link = item.Element ("link") Valoare) ToList (); 

Acesta este locul în care trăiește toată logica pentru preluarea datelor din feed-ul blogului Xamarin RSS. Dacă ați urmat de-a lungul versiunii Android a introducerii tutorialului Xamarin, probabil că acesta este familiar. Asta pentru că este exact același cod.

Începeți prin a crea un httpclient și folosind GetStringAsync pentru a descărca datele găsite la adresa URL furnizată și utilizați Analiza metoda pe XDocument pentru a pregăti datele pentru unele magie Linq-to-Xml. Odată ce ai XDocument obiect, îl puteți interoga pentru a obține valorile tuturor elementelor elementului element găsit în feedul RSS și a inițializa instanțele RssItem clasa și salvați-le în privat _items variabil.

După constructor, în implementare există doar două metode. Aceste metode sunt DidReceiveMemoryWarning și ViewDidLoad. Nu aveți nevoie să faceți nimic cu prima metodă, dar, ca și cele mai multe lucruri, se cuvine să știți cel puțin pentru ce este vorba.

DidReceiveMemoryWarning metoda se numește în orice moment al executării acestei clase atunci când dispozitivul sau simulatorul a determinat că aplicația dvs. ar putea prelua prea multă memorie și ar putea fi eventual terminată. Aceasta este ocazia dvs. de a elibera unele resurse de memorie intensivă pentru a împiedica acest lucru să se întâmple. După cum sugerează și numele său, ViewDidLoad metoda este invocată atunci când vizualizarea este încărcată și înainte de a fi prezentată utilizatorului.

async public suprascrie void ViewDidLoad () base.ViewDidLoad (); // Înregistrați sursa de date TableView TableView.Source = FeedItemSource nou (_items); 

În această metodă numim metoda de bază a ViewDidLoad și să creați o nouă instanță a FeedItemSource clasă, atribuindu - i acestuia TableView.Source proprietate. Odată ce acest lucru se va realiza, utilizatorul va putea vedea datele preluate din feedul RSS și plasat în vizualizarea listei. Dacă sunteți confuz în cazul în care TableView proprietatea vine, este moștenită de la FeedItemControllerclasa de bază, UITableViewController. Această clasă de bază oferă o referință la vizualizarea reală a tabelului care este în vizualizarea controlerului de vizualizare.

Pasul 6: Împreună cu toți

Acum aveți toate piesele necesare pentru a prezenta o listă de articole utilizatorilor. Singura problemă este că niciunul dintre ele nu apare încă. Motivul este că cererea dvs. nu a fost spus să utilizeze FeedItemController pentru a afișa datele utilizatorului. Pentru a face acest lucru, trebuie să faceți o mică modificare pentru dvs. AppDelegate clasă.

AppDelegate clasa conține în prezent o metodă, FinishedLaunching. Această metodă este chemată de delegatul aplicației de către sistemul de operare. Pentru ca totul să funcționeze, trebuie să facem o ușoară modificare a punerii sale în aplicare.

suprascriere publică bool FinishedLaunching (aplicație UIApplication, opțiuni NSDictionary) // crea o instanță nouă fereastră bazată pe fereastra de dimensiune a ecranului = noua fereastră UIWindow (UIScreen.MainScreen.Bounds); var controler = nou FeedItemController (); controller.View.BackgroundColor = UIColor.White; controller.Title = "Xamarin Feeds"; var navController = nou UINavigationController (controler); window.RootViewController = navController; // face fereastra fereastra vizibilă.MakeKeyAndVisible (); return true; 

Primele patru linii sunt destul de standard. Creați o nouă instanță a UIWindow clasă, care va conține interfața de utilizare a aplicației dvs. Apoi creați o nouă instanță a FeedItemController clasa și setați-o Culoare de fundal proprietate la UIColor.White și dați-i a Titlu.

Următoarele două linii pot părea puțin confuz. Creați o nouă instanță a UINavigationController, treci la el FeedItemController exemplu în constructor, setați RootViewController proprietate a fereastră obiecte față de UINavigationController, și sunați MakeKeyAndVisible. De ce trebuie să trecem prin această greșeală? De ce nu putem seta RootViewController la FeedItemController și o numesc o zi? Puteți face acest lucru și aplicația dvs. va funcționa în continuare. Cu toate acestea, dacă faceți acest lucru, bara de stare din partea superioară a ecranului se va afișa în partea de sus a listei dvs. și va arăta rău. Adăugarea controlerului la a UINavigationController este un mic truc care realizează două lucruri:

  • adaugă spațiu între partea de sus a controlului și partea superioară a ecranului
  • aceasta face Titlu proprietatea controlerului este vizibilă

Este timpul să construiți și să difuzați aplicația în Simulatorul iOS. Rezultatul ar trebui să arate similar cu imaginea de mai jos.

Concluzie

Și acolo aveți. Tocmai ați creat cu succes o aplicație iOS pe deplin funcțională, folosind doar C # și Xamarin. E o realizare destul de impresionantă dacă te gândești la asta.

Sper că acest lucru vă dă încrederea și conduceți să vă aruncați mai adânc în domeniul lui Xamarin și în ușile pe care vi le deschide. De aici puteți afla despre crearea aplicațiilor Android în C # utilizând Xamarin, dacă nu ați făcut-o deja. Dacă aveți, puteți să explorați modul în care puteți crea aplicații cross-platform care pot reutiliza majoritatea unei singure baze de cod și pot fi difuzate pe dispozitive iOS și Android. Asta vă voi arăta în următorul tutorial.

Următorul pas: Urmăriți cursul

Dacă doriți să aflați mai multe despre Xamarin, verificați cursul pe care l-ați construit Aplicații multi-platformă cu C # în Xamarin. 

În curs, veți învăța cum să creați o aplicație cross-platformă dintr-o bază de cod unică, care va funcționa pe trei platforme diferite: iOS, Android și Windows Phone 8. Credeți că nu se poate face? În doar puțin timp o veți face singur. Sa trecem la treaba.

Puteți să o luați imediat cu un complet gratuit Studiu de 14 zile al unui abonament Tuts +. Aruncati o privire la optiunile noastre de abonament pentru a incepe sau, daca sunteti interesat doar de acest curs, o puteti cumpar

Cod