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

En naš prejšnji članek V vmesnik naše aplikacije smo vključili oznako, polje z besedilom in gumb. Želeli smo, da se vsebina oznake posodobi s tem, kar je bilo vneseno v polje TextField ob kliku na gumb. Projekt smo ustvarili (1. korak) in (2. korak) uporabili InterfaceBuilder za definiranje zaslona. Zdaj bomo nadaljevali z ostalimi koraki, da bo aplikacija delovala.

Korak 3. Ustvari spremenljivke v ViewControllerju.

Naš vmesnik imamo pravilno. Pravzaprav, če bi naredili Build & Go, bi lahko videli, kako nam gre:

A s pritiskom na gumb se očitno nič ne zgodi, ker nismo dosegli minimalnega bistvenega razvoja. V tem koraku 3 bomo predstavili spremenljivke in metode v programu HelloWorldViewController, tako v vmesniku (datoteka .h) kot v izvedbi (datoteka .m). Da bi to naredili, kot smo navedli na koncu prejšnjega prispevka, moramo vedeti, da TextField ustreza razredu UITextField, Label pa razredu UILabel. Ta dva razreda sta v okviru UIKit.

Če nismo zaprli in shranili Interface Builderja, to storimo in v XCode odpremo datoteko HelloWorldViewController.h. Trenutno bo koda imela nekaj takega:

Že gledamo nekaj Objective-C. V tej kodi vidimo izjavo o uvozu knjižnice UIKit, kjer sta razreda UILabel in UITextField. Vidimo, kako je vmesnik razglašen in da sega od splošnega UIViewControllerja UIKit.

Znotraj kode vmesnika vključujemo naslednjo kodo:

Zdaj lahko razložimo, kaj smo storili:

  • V bloku @interface smo razglasili atributa tipa UILabel in UITextField z dvema imenoma spremenljivk * label in * textField. Pred nami se prikaže IBOutlet. Kaj je vse to? Razložimo si. IBOutlet ni vrsta spremenljivke; je direktiva, ki pomaga Interface Builderju vedeti o obstoju teh spremenljivk tipa UILabel in UITextField. Mimogrede, ne pozabite, da smo vam v prejšnjem članku dali trik, da poznate spremenljive vrste nadzornih predmetov (gumbi, nalepke, besedilno polje itd.) V programu Interface Builder. Po drugi strani pa lahko vprašanje * pred imenom spremenljivke preseneti Java programerje, ne toliko tiste iz C ..., vendar se naučite, da boste tako zapisali spremenljivke primerkov v Objective-C.
  • Deklarirajo se lastnosti UILabel in UITextField. neatomsko in obdržati za zdaj ne bomo videli, povezano je z upravljanjem pomnilnika.
  • Vidimo, da prijavimo metodo updateText. Pred njim je znak -, ki označuje, da gre za metodo primerka in ne za metodo razreda (zanje je razložen znak +). Tega ne moremo razlagati, ker gre za osnovno objektno usmerjeno programiranje ... Ta metoda ne vrne ničesar (torej void) in prejme parameter tipa id. V bistvu se nanaša na identifikator predmeta, ki bo povzročil klic naše metode updateTexto, ki bo posodobila vrednost oznake. Lahko ugibamo, saj bo ta nadzor sam gumb ...

Ko je to končano, smo s korakom 3 končali.


Korak 4. Povežite kontrolnike pogleda s spremenljivkami krmilnika.

Če pregledamo, smo na eni strani razvili vmesnik z Interface Builder, na drugi pa spremenljivke, povezane s temi kontrolniki v HelloWorldViewController.h (vmesnik razreda krmilnika HelloWorldViewController.m). Vendar pa še vedno ni nobenega odnosa med pogledom in krmilnikom, to pomeni, da nismo dali nobenih navodil za povezovanje, na primer, besedilnega polja, ki ga oblikujemo v programu Interface Builder, s spremenljivko tipa UITextField, ki smo jo vnesli v razred. Zdaj bomo opravili to nalogo. Znova odpremo Interface Builder s klikom na HelloWorldViewController.xib, s klikom na besedilno polje in v paleti Inspector gremo na drugi zavihek (Text Field Connections). Vidimo, da obstaja odsek Referencing Outlets, ne da bi bilo kaj označeno. To pomeni, da trenutno Interface Builder ne pozna nobene povezave med tem besedilnim poljem in IBOutletom (Interface Builder Outlet) razreda ... vendar imamo v našem HelloWorldViewController UITextField IBOutlet, zato ga bomo povezali.

Če želite to narediti, kot vidimo na sliki, s klikom na majhen krog poleg možnosti »Nova referenčna vtičnica« povlečemo do lastnika datoteke okna HelloWorldViewController.xib. Izbral nam bo 2 možnosti, view (celoten pogled) in textField (naša spremenljivka). Očitno izberemo textField in tako svoje besedilno polje povežemo s spremenljivko svojega tipa UITextField. Mimogrede, Lastnik datoteke ali lastnik datoteke ni niti bolj niti manj od našega razreda krmilnika ...

Operacijo ponovimo z nalepko in jo povežemo z oznako spremenljivke krmilnika. In z gumbom je nekaj drugačnega. V tem primeru ga bomo povezali z našo operacijo updateTexto, vendar za določen dogodek. Naredite to z dogodkom »Touch Up Inside« in izberite našo metodo updateTexto:

Na ta način smo že povezali kontrolnike, ki smo jih definirali z Interface Builder, in spremenljivke, ki smo jih vnesli v krmilnik. Zapremo Interface Builder, ki prihrani vse, in gremo do zadnjega koraka, ki se vrne v XCode.

Korak 5. Najnovejši razvoj.

V XCode odpremo HelloWorldViewController.my in vstavimo naslednjo kodo, tako da je naš razred videti tako:

Če natančno pogledamo, smo preprosto postavili blok @synthesize in izvedbo metode, deklarirane v vmesniku .h, updateTexto. Pod to kodo boste imeli veliko komentiranih kod.

Vrstica @synthesize naredi nekaj podobnega ustvarjanju tipičnega getterja / nastavitelja (accessors / mutators), značilnega za OO jezike (enkapsulacija). Potrebujemo jih, da krmilnik doseže vsebino, na primer besedilnega polja.

Kot vidite, metoda updateTexto preprosto posodobi besedilo naše nalepke z vsebino besedilnega polja. Končali smo.

Zdaj preprosto naredimo Build & Go in videli boste, da ko vnesete besedilni niz in kliknete gumb, se vsebina oznake posodobi. V naslednjem članku bomo predstavili izboljšave naše aplikacije.


Spremljajte nas v Google News

Pustite svoj komentar

Vaš e-naslov ne bo objavljen. Obvezna polja so označena z *

*

*

  1. Odgovoren za podatke: AB Internet Networks 2008 SL
  2. Namen podatkov: Nadzor neželene pošte, upravljanje komentarjev.
  3. Legitimacija: Vaše soglasje
  4. Sporočanje podatkov: Podatki se ne bodo posredovali tretjim osebam, razen po zakonski obveznosti.
  5. Shranjevanje podatkov: Zbirka podatkov, ki jo gosti Occentus Networks (EU)
  6. Pravice: Kadar koli lahko omejite, obnovite in izbrišete svoje podatke.

  1.   Peter je dejal

    Zelo dobra vadnica, zelo jasna in preprosta.

  2.   rubdotto.com je dejal

    No, moram biti zelo melona 🙁, ker mi ne gre. Vrednost sem zajel v niz in zavzame besedilo, vendar ga ne dodeli etiketi, vsaj ne naslika, ker poskušam videti label.text in mi pove, da je izven obsega ...

  3.   leo2279 je dejal

    Odlično vaše vadnice, res dobro pojasnjuje ta razvoj za iphone, upam, da boste še naprej objavljali več vadnic.

    pozdrav

  4.   Mariano je dejal

    Živjo, vse v redu, ampak ne deluje. Da bi to delovalo, sem moral pogled graditelja vmesnikov povezati s pogledom v kocki, kot učite z besedilnim poljem in oznako. Za ostalo najlepša hvala.