Arendamine iPhone'is (5): meie esimene rakendus (III)

En meie eelmine artikkel Olime oma rakenduse liidesesse lisanud sildi, tekstivälja ja nupu. Tahtsime, et sildi sisu värskendataks nupule klõpsates TextFieldi sisestatud sisuga. Olime (1. samm) loonud projekti ja (2. samm) kasutanud ekraani määratlemiseks InterfaceBuilderit. Nüüd jätkame ülejäänud toimingutega, et rakendus töötaks.

Samm 3. Looge muutujad ViewControlleris.

Meil on liides õigesti. Tegelikult, kui me teeksime Build & Go'i, näeksime, kuidas meil läheb:

Kuid ilmselgelt ei juhtu nupule vajutades midagi, sest me pole teinud minimaalseid olulisi arenguid. Selles etapis 3 tutvustame HelloWorldViewControlleri muutujaid ja meetodeid nii liideses (.h fail) kui ka rakenduses (.m fail). Selleks, nagu eelmise postituse lõpus osutasime, peame teadma, et TextField vastab klassile UITextField ja silt UILabel klassile. Need 2 klassi kuuluvad UIKiti raamistikku.

Kui me pole Interface Builderit sulgenud ja salvestanud, siis teeme selle ära ja XCode'is avame faili HelloWorldViewController.h. Praegu on koodil midagi sellist:

Vaatame juba mõnda Objective-C-d. Selles koodis näeme UIKiti teegi impordideklaratsiooni, kus asuvad klassid UILabel ja UITextField. Me näeme, kuidas liides deklareeritakse ja et see ulatub UIKiti üldisest UIViewControllerist.

Liidese kood sisaldab järgmist koodi:

Nüüd saame selgitada, mida oleme teinud:

  • Oleme plokis @interface deklareerinud 2 atribuuti tüüpidega UILabel ja UITextField vastavalt 2 muutuja nimega * silt ja * textField. Ees paistab IBOutlet. Mis see kõik on? Seletame ise. IBOutlet ei ole muutuja tüüp; on direktiiv, mis aitab Interface Builderil teada saada nende UILabel ja UITextField tüüpi muutujate olemasolu. Muide, pidage meeles, et eelmises artiklis andsime teile nippi, et teada saada Interface Builderis juhtobjektide muutujate tüüpe (nupud, silt, tekstiväljad jne). Teisest küljest võib muutuja nime ees olev * märk üllatada Java programmeerijaid, mitte niivõrd C omad ... aga õppige, et nii kirjutate objektimuutujaid objekt-C-s.
  • Deklareeritakse omadused UILabel ja UITextField. mitteatoomilised ja säilitavad, mida me praegu ei näe, see on seotud mäluhaldusega.
  • Näeme, et kuulutame välja meetodi updateText. Selle ees on märk -, mis näitab, et tegemist on eksemplarimeetodiga, mitte klassi meetodiga (nende jaoks on selgitatud + märk). Me ei saa seda seletada, sest see on põhiline objektorienteeritud programmeerimine ... See meetod ei tagasta midagi (st tühine) ja saab parameetri tüüpi id. Põhimõtteliselt viitab see objekti identifikaatorile, mis kutsub esile meie updateTexto meetodi, mis värskendab sildi väärtust. Võime aimata, kuna see juhtnupp on nupp ise ...

Kui see on tehtud, oleme 3. sammuga valmis.


Samm 4. Siduge vaate juhtelemendid kontrolleri muutujatega.

Kui vaatame läbi, siis ühelt poolt oleme oma liidese arendanud liidese ehitajaga ja teisest küljest on meil nende kontrollidega seotud muutujad HelloWorldViewController.h (kontrollerite klassi HelloWorldViewController.m liides). Kuid vaate ja kontrolleri vahel pole endiselt mingit suhet, see tähendab, et me ei ole andnud juhiseid näiteks liidese Builderis kujundatava tekstivälja seostamiseks muutujaga UITextField, mille oleme sisestanud klass. Nüüd hakkame seda ülesannet tegema. Avame Interface Builderi uuesti, klõpsates saidil HelloWorldViewController.xib, klõpsates tekstiväljal ja inspektoripaletis läheme teisele vahekaardile (tekstivälja ühendused). Näeme, et seal on jaotis, mille nimi on Võimalike kohtade viitamine, ilma et oleks midagi märgitud. See tähendab, et praegu ei tea Interface Builder mingit seost selle tekstivälja ja klassi IBOutleti (Interface Builder Outlet) vahel ... kuid meil on meie HelloWorldViewControlleris UITextField IBOutlet, seega me linkime selle.

Selleks, nagu näeme jooniselt, klõpsates «Uue viite väljundi» kõrval oleval väikesel ringil, lohistame akna Faili omanik nimega HelloWorldViewController.xib. See võimaldab meil valida 2 valikut, vaate (täisvaade) ja textField (meie muutuja). Ilmselt valime textField ja seome seeläbi oma tekstikasti selle tüüpi muutujaga UITextField. Muide, faili Omanik või faili omanik pole ei rohkem ega vähem kui meie kontrolleriklass ...

Kordame toimingut sildiga, seostades selle meie kontrolleri muutuja sildiga. Ja nupuga on see midagi muud. Sellisel juhul seostame selle oma operatsiooniga updateTexto, kuid konkreetse sündmuse jaoks. Tehke seda sündmusega "Puuduta sees" ja valige meie updateTexto meetod:

Ja nii on meil juba seotud juhtelemendid, mille olime määranud Interface Builderiga, ja muutujad, mille oleme kontrollerisse pannud. Sulgeme liidese ehitaja, salvestades kõik, ja läheme viimase sammu juurde tagasi XCode'i.

5. samm. Viimased arengud.

XCode'is avame HelloWorldViewController.my ja panime järgmise koodi nii, et meie klass näeb välja selline:

Kui vaatame tähelepanelikult, oleme lihtsalt pannud ploki @synthesize ja liideses .h, updateTexto deklareeritud meetodi rakendamise. Selle koodi all on palju kommenteeritud koodi.

Rida @synthesize teeb midagi sarnast OO keeltes tüüpilise getter / setteri (ligipääsud / mutorid) genereerimisega (kapseldamine). Vajame neid selleks, et kontroller jõuaks näiteks tekstikasti sisuni.

Nagu näete, uuendab meetod updateTexto lihtsalt meie sildi teksti tekstivälja sisuga. Me saime valmis.

Nüüd teeme lihtsalt Build & Go'i ja näete, et sisestades tekstistringi ja klõpsates nuppu, värskendatakse sildi sisu. Järgmises artiklis tutvustame oma rakenduse täiustusi.


Jälgige meid Google Newsis

Jäta oma kommentaar

Sinu e-postiaadressi ei avaldata. Kohustuslikud väljad on tähistatud *

*

*

  1. Andmete eest vastutav: AB Internet Networks 2008 SL
  2. Andmete eesmärk: Rämpsposti kontrollimine, kommentaaride haldamine.
  3. Seadustamine: teie nõusolek
  4. Andmete edastamine: andmeid ei edastata kolmandatele isikutele, välja arvatud juriidilise kohustuse alusel.
  5. Andmete salvestamine: andmebaas, mida haldab Occentus Networks (EL)
  6. Õigused: igal ajal saate oma teavet piirata, taastada ja kustutada.

  1.   Pedro DIJO

    Väga hea õpetus, väga selge ja lihtne.

  2.   rubdotto.com DIJO

    Noh, ma pean olema väga melon 🙁, sest see ei tööta minu jaoks. Olen stringi väärtuse hõivanud ja see võtab küll teksti, kuid see ei määra seda sildile, vähemalt ei värvita seda, sest ma üritan näha label.textit ja see ütleb mulle ulatuse ...

  3.   leo2279 DIJO

    Suurepärased õpetused, see seletab iPhone'i arengut tõesti väga hästi, loodan, et avaldate jätkuvalt rohkem õpetusi.

    osas

  4.   Mariano DIJO

    Tere, kõik lahe, kuid see ei toimi. Selle toimimiseks pidin linkima liidese koostaja vaate kuupis, nagu õpetate tegema tekstivälja ja sildiga. Ülejäänud osas tänan teid väga.