Razvoj na iPhoneu (5): naša prva aplikacija (III)

En naš prethodni članak U sučelje naše aplikacije uključili smo oznaku, polje za tekst i gumb. Željeli smo da se sadržaj oznake ažurira onim što je uneseno u TextField kad kliknete na gumb. Mi smo (korak 1) stvorili projekt i (korak 2) koristili InterfaceBuilder za definiranje zaslona. Sada ćemo nastaviti s ostalim koracima kako bismo ostavili aplikaciju da radi.

Korak 3. Stvorite varijable u ViewControlleru.

Pravilno imamo sučelje. Zapravo, da jesmo Build & Go, mogli bismo vidjeti kako to izgleda:

No očito se ništa ne događa kada pritisnete gumb, jer nismo napravili minimum bitnih pomaka. U ovom ćemo koraku 3 predstaviti varijable i metode u programu HelloWorldViewController, kako u sučelju (.h datoteka), tako i u implementaciji (.m datoteka). Da bismo to učinili, kao što smo naznačili na kraju prethodnog posta, moramo znati da TextField odgovara klasi UITextField, a Label klasi UILabel. Ova 2 razreda su u okviru UIKit-a.

Ako nismo zatvorili i spremili Interface Builder, to radimo i u XCodeu otvaramo datoteku HelloWorldViewController.h. Kod će sada imati otprilike ovako:

Već gledamo neki Objective-C. U ovom kodu vidimo deklaraciju o uvozu knjižnice UIKit, gdje su klase UILabel i UITextField. Vidimo kako je sučelje deklarirano i kako se proteže od generičkog UIViewControllera UIKita.

Unutar koda sučelja uključujemo sljedeći kôd:

Sada možemo objasniti što smo učinili:

  • U bloku @interface deklarirali smo 2 atributa tipa UILabel i UITextField, s 2 imena varijabli * label i * textField. Ispred se pojavljuje IBOutlet. Što je sve ovo? Objašnjavamo se. IBOutlet nije vrsta varijable; je direktiva koja pomaže Interface Builderu da zna postojanje ovih varijabli tipa UILabel i UITextField. Usput, sjetite se da smo vam u prethodnom članku dali trik da znate tipove varijabli kontrolnih objekata (gumbi, naljepnice, tekstualno polje itd.) U programu Interface Builder. S druge strane, pitanje * ispred imena varijable može iznenaditi Java programere, ne toliko one C ... ali naučite da ćete tako zapisati varijable instance u Objective-C.
  • Deklarirana su svojstva UILabel i UITextField. neatomske i zadržati za sada nećemo vidjeti, vezano je uz upravljanje memorijom.
  • Vidimo da deklariramo metodu updateText. Ima znak - ispred sebe, što znači da je to metoda instance, a ne metoda klase (za njih je objašnjen znak +). To ne možemo objasniti jer je ovo osnovno objektno orijentirano programiranje ... Ta metoda ne vraća ništa (odnosno void) i prima parametar tipa id. U osnovi se odnosi na identifikator objekta koji će uzrokovati poziv našoj metodi updateTexto, koja će ažurirati vrijednost oznake. Možemo pretpostaviti budući da će ta kontrola biti sam gumb ...

Kad je to gotovo, gotovi smo s korakom 3.


Korak 4. Povežite kontrole prikaza s varijablama kontrolera.

Ako pregledamo, s jedne smo strane razvili naše sučelje s Interface Builder-om, a s druge strane imamo varijable povezane s tim kontrolama u HelloWorldViewController.h (sučelje klase kontrolera HelloWorldViewController.m). Međutim, još uvijek ne postoji veza između pogleda i kontrolera, odnosno nismo dali nikakve upute za povezivanje, na primjer, tekstualnog polja koje dizajniramo u Interface Builderu s varijablom tipa UITextField koju smo stavili u razred. Sad ćemo obaviti ovaj zadatak. Ponovno otvaramo Interface Builder klikom na HelloWorldViewController.xib, klikom na tekstni okvir i u paleti Inspector idemo na drugu karticu (Text Field Connections). Vidimo da postoji odjeljak pod nazivom Referencing Outlets, bez da je išta označeno. To znači da u ovom trenutku Interface Builder ne poznaje nikakvu vezu između ovog tekstualnog polja i IBOutleta (Interface Builder Outlet) klase ... ali u našem HelloWorldViewController imamo UITextField IBOutlet, pa ćemo ga povezati.

Da bismo to učinili, kao što vidimo na slici, klikom na mali krug pored «New Referencing Outlet», povlačimo do Vlasnika datoteke prozora HelloWorldViewController.xib. Omogućit će nam odabir 2 opcije, view (puni prikaz) i textField (naša varijabla). Očito odabiremo textField, pa stoga svoj tekstni okvir povezujemo s varijablom svog tipa UITextField. Usput, Vlasnik datoteke ili vlasnik datoteke nije ni više ni manje od naše klase kontrolera ...

Ponavljamo operaciju s naljepnicom, povezujući je s oznakom varijable regulatora. A s gumbom je nešto drugačije. U ovom ćemo ga slučaju povezati s našom operacijom updateTexto, ali za određeni događaj. Učinite to s događajem 'Touch Up Inside' i odaberite našu metodu updateTexto:

I na taj smo način već povezali kontrole koje smo definirali s Interface Builder-om i varijable koje smo stavili u kontroler. Zatvaramo Interface Builder spremajući sve i idemo na posljednji korak vraćajući se na XCode.

Korak 5. Najnovija dostignuća.

U XCode otvaramo HelloWorldViewController.my i stavljamo sljedeći kod tako da naša klasa izgleda ovako:

Ako pažljivo pogledamo, jednostavno smo stavili blok @synthesize i provedbu metode deklarirane u sučelju .h, updateTexto. Ispod tog koda imat ćete puno komentiranog koda.

Linija @synthesize čini nešto slično generiranju tipičnog gettera / postavljača (accessors / mutators) tipičnog za OO jezike (enkapsulacija). Trebamo ih tako da kontroler dosegne sadržaj, na primjer, tekstualnog okvira.

Kao što vidite, metoda updateTexto jednostavno ažurira tekst naše naljepnice sadržajem tekstualnog polja. Mi smo gotovi.

Sada jednostavno radimo Build & Go i vidjet ćete da se kada unesete tekstualni niz i kliknete gumb, sadržaj naljepnice ažurira. U sljedećem ćemo članku predstaviti poboljšanja naše aplikacije.


Pratite nas na Google vijestima

Ostavite svoj komentar

Vaša email adresa neće biti objavljen. Obavezna polja su označena s *

*

*

  1. Odgovoran za podatke: AB Internet Networks 2008 SL
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obvezi.
  5. Pohrana podataka: Baza podataka koju hostira Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.

  1.   Nestajati dijo

    Vrlo dobar vodič, vrlo jasan i jednostavan.

  2.   rubdotto.com dijo

    Pa, moram biti jako dinja 🙁 jer mi to ne uspijeva. Vrijednost sam uhvatio u niz i uzima tekst, ali ga ne dodjeljuje naljepnici, barem ga ne slika, jer pokušavam vidjeti label.text i to mi govori izvan opsega ...

  3.   leo2279 dijo

    Izvrsni vaši tutorijali, stvarno jako dobro objašnjava ovaj razvoj za iphone, nadam se da ćete i dalje objavljivati ​​još tutorijala.

    pozdravi

  4.   Mariano dijo

    Bok, sve je u redu, ali ne ide. Da bi to uspjelo, morao sam povezati pogled graditelja sučelja s prikazom u kocki, kao što to učite s tekstnim poljem i oznakom. Za ostalo hvala puno.