Kūrimas „iPhone“ (5): mūsų pirmoji programa (III)

En mūsų ankstesnis straipsnis Į savo programos sąsają įtraukėme etiketę, „TextField“ ir mygtuką. Norėjome, kad etiketės turinys būtų atnaujintas tuo, kas buvo įrašyta į „TextField“, spustelėjus mygtuką. Mes (1 žingsnis) sukūrėme projektą ir (2 žingsnis) naudojome „InterfaceBuilder“, kad apibrėžtume ekraną. Dabar tęsime likusius veiksmus, kad programa veiktų.

3 žingsnis. Sukurkite kintamuosius „ViewController“.

Mes sąsają turime teisingai. Tiesą sakant, jei atliktume „Build & Go“, galėtume pamatyti, kaip tai atrodo:

Bet akivaizdu, kad paspaudus mygtuką nieko nevyksta, nes mes nepadarėme būtiniausių pokyčių. Šiame 3 žingsnyje mes pristatysime kintamuosius ir metodus „HelloWorldViewController“ tiek sąsajoje (.h faile), tiek įgyvendinime (.m faile). Norėdami tai padaryti, kaip nurodėme ankstesnio įrašo pabaigoje, turime žinoti, kad „TextField“ atitinka UITextField klasę, o etiketė - UILabel klasę. Šios dvi klasės priklauso UIKit sistemai.

Jei neuždarėme ir neišsaugojome „Interface Builder“, tai darome ir „XCode“ atidarome failą HelloWorldViewController.h. Šiuo metu kodas bus panašus į šį:

Mes jau žiūrime į kažkokį „Objective-C“. Šiame kode matome UIKit bibliotekos importo deklaraciją, kur yra UILabel ir UITextField klasės. Mes matome, kaip sąsaja deklaruojama ir kad ji tęsiasi iš bendro UIKit valdiklio UIViewController.

Į sąsajos kodą įtraukiame šį kodą:

Dabar galime paaiškinti, ką padarėme:

  • @Interface bloke deklaravome 2 UILabel ir UITextField tipo atributus su atitinkamai 2 kintamųjų pavadinimais * etikete ir * textField. Priekyje pasirodo IBOutlet. Kas visa tai? Paaiškiname patys. „IBOutlet“ nėra kintamųjų tipas; yra direktyva, padedanti sąsajos kūrėjui sužinoti apie šių kintamųjų tipus UILabel ir UITextField. Beje, atminkite, kad ankstesniame straipsnyje mes jums suteikėme gudrybę žinoti kintamuosius valdymo objektų tipus (mygtukus, etiketes, teksto lauką ir kt.) „Interface Builder“. Kita vertus, klausimas * prieš kintamojo pavadinimą gali nustebinti „Java“ programuotojus, o ne tiek C ... bet sužinokite, kad taip parašysite „Objective-C“ egzempliorių kintamuosius.
  • Deklaruojamos savybės UILabel ir UITextField. nonatomic ir išlaikyti mes dabar nematysime, tai yra susiję su atminties valdymu.
  • Matome, kad deklaruojame metodą „updateText“. Priešais jį yra ženklas „-“, nurodantis, kad tai yra egzemplioriaus metodas, o ne klasės metodas (jiems paaiškinamas „+“ ženklas). Negalime to aiškinti, nes tai yra pagrindinis objektinis programavimas ... Šis metodas nieko negrąžina (tai yra negaliojantis) ir gauna ID tipo parametrą. Iš esmės tai nurodo objekto identifikatorių, dėl kurio bus iškviečiamas metodas „updateTexto“, kuris atnaujins etiketės vertę. Galime spėti, nes tas valdymas bus pats mygtukas ...

Kai tai bus padaryta, atliksime 3 veiksmą.


4 žingsnis. Susieti valdiklio kintamųjų rodinio valdiklius.

Jei peržiūrėsime, viena vertus, sukūrėme sąsają su „Interface Builder“, kita vertus, turime kintamuosius, susijusius su šiais valdikliais, „HelloWorldViewController.h“ (valdiklių klasės „HelloWorldViewController.m“ sąsaja). Tačiau vis dar nėra jokio ryšio tarp rodinio ir valdiklio, tai yra, mes nepateikėme jokių nurodymų susieti, pavyzdžiui, su „Interface Builder“ suprojektuotu teksto lauku su „UITextField“ tipo kintamuoju, kurį įdėjome į klasė. Dabar mes atliksime šią užduotį. Dar kartą atidarome „Interface Builder“ spustelėdami „HelloWorldViewController.xib“, spustelėkite teksto laukelį ir „Inspector“ paletėje einame į antrąjį skirtuką („Text Field Connections“). Matome, kad yra skyrius, vadinamas „Nuorodų išparduotuvėmis“, nieko nepažymėjus. Tai reiškia, kad šiuo metu „Interface Builder“ nežino jokio ryšio tarp šio teksto lauko ir klasės „IBOutlet“ („Interface Builder Outlet“) ... bet mes turime „UITextField IBOutlet“ savo „HelloWorldViewController“, taigi mes jį susiesime.

Norėdami tai padaryti, kaip matome paveikslėlyje, spustelėdami mažą apskritimą šalia «Naujos nuorodos išvesties», mes nuvilkame prie lango, pavadinto HelloWorldViewController.xib, failo savininko. Tai leis mums pasirinkti 2 parinktis, rodinį (visą vaizdą) ir textField (mūsų kintamąjį). Akivaizdu, kad mes pasirenkame textField, taigi mes susiejame savo teksto laukelį su jo tipo kintamuoju UITextField. Beje, failo savininkas ar failo savininkas nėra nei didesnis, nei mažesnis nei mūsų valdiklio klasė ...

Kartojame operaciją su etikete, susiedami ją su mūsų valdiklio kintama etikete. Ir mygtuku jis yra kažkas kitoks. Šiuo atveju mes tai susiesime su „updateTexto“ operacija, bet konkrečiu įvykiu. Atlikite tai su „Touch Up Inside“ įvykiu ir pasirinkite „updateTexto“ metodą:

Tokiu būdu mes jau susiejame valdiklius, kuriuos nustatėme naudodami „Interface Builder“, ir kintamuosius, kuriuos įdėjome į valdiklį. Uždarome sąsajos kūrimo priemonę išsaugodami viską ir einame į paskutinį žingsnį grįždami į „XCode“.

5 žingsnis. Naujausi įvykiai.

„XCode“ atidarome „HelloWorldViewController.my“ ir įdėjome šį kodą taip, kad mūsų klasė atrodytų taip:

Jei atidžiai pažvelgsime, paprasčiausiai įdėjome bloką @synthesize ir metodo įgyvendinimą, nurodytą sąsajoje .h, updateTexto. Žemiau šio kodo turėsite daug komentuojamo kodo.

@Synthesize eilutė daro kažką panašaus, kaip generuoti tipinį „Oetter“ kalbų tipinį „getter / setter“ (prieigos elementai / mutatoriai) (inkapsuliacija). Mums jų reikia, kad turinys pasiektų valdiklį, pavyzdžiui, teksto laukelį.

Metodas „updateTexto“, kaip matote, tiesiog atnaujina etiketės tekstą su teksto lauko turiniu. Mes baigėme.

Dabar mes tiesiog darome „Build & Go“ ir pamatysite, kad įvedus teksto eilutę ir spustelėjus mygtuką, etiketės turinys atnaujinamas. Kitame straipsnyje pristatysime savo programos patobulinimus.


Sekite mus „Google“ naujienose

Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Už duomenis atsakingas: AB Internet Networks 2008 SL
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.

  1.   pedro sakė

    Labai gera pamoka, labai aiški ir paprasta.

  2.   rubdotto.com sakė

    Na, aš turiu būti labai melionas, nes jis man netinka. Aš užfiksavau vertę eilutėje ir ji paima tekstą, tačiau ji nepriskiria jos etiketei, bent jau jos nepiešia, nes aš bandau pamatyti label.text ir jis man sako, kad jis nepatenka į taikymo sritį ...

  3.   leo2279 sakė

    Puikios jūsų pamokos, tai tikrai labai gerai paaiškina šį „iPhone“ vystymąsi, tikiuosi, jūs ir toliau skelbsite daugiau vadovėlių.

    dėl

  4.   Mariano sakė

    Sveiki, viskas šaunu, bet tai neveikia. Kad jis veiktų, turėjau susieti sąsajos kūrėjo vaizdą su vaizdu kubelyje, kaip mokote daryti su teksto lauku ir etikete. Už likusius, labai ačiū.