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.
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:
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.
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.
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.
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.
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.
Î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.
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.
Î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:
Î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.
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..
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.
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.
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 articoluluiCreator
, un șir reprezentând autorul articoluluiPubDate
, A DateTime
reprezentând data publicării articoluluiLegătură
, un șir reprezentând o legătură directă cu articolulCu 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.
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:
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 î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.
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
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.
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.
Î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.
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.
Subtitlu
stil. Acest stil permite două câmpuri de text din celulă, una deasupra celeilalte.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 FeedItemController
clasa de bază, UITableViewController
. Această clasă de bază oferă o referință la vizualizarea reală a tabelului care este în vizualizarea controlerului de vizualizare.
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:
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.
Ș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.
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