Fejlesztés iPhone-on (5): első alkalmazásunk (III)

En előző cikkünk Alkalmazásunk felületén felvettünk egy címkét, egy szövegmezőt és egy gombot. Azt szerettük volna, hogy a Címke tartalma frissüljön a TextFieldbe beírt adatokkal, amikor a gombra kattintanak. (1. lépés) létrehoztuk a projektet, és (2. lépés) az InterfaceBuilder alkalmazásával meghatároztuk a képernyőt. Most folytatjuk a további lépéseket, hogy az alkalmazás működőképes maradjon.

3. lépés: Hozzon létre változókat a ViewControllerben.

Helyesen van a kezelőfelületünk. Valójában, ha a Build & Go-t elvégeztük, láthattuk, hogy néz ki:

De nyilvánvalóan semmi sem történik a gomb megnyomásakor, mert nem hajtottuk végre a minimális alapvető fejlesztéseket. Ebben a 3. lépésben bemutatjuk a változókat és módszereket a HelloWorldViewController-ben, mind az interfészben (.h fájl), mind a megvalósításban (.m fájl). Ehhez, amint azt az előző bejegyzés végén jeleztük, tudnunk kell, hogy a TextField megfelel egy UITextField osztálynak, a Label pedig egy UILabel osztálynak. Ez a 2 osztály az UIKit keretein belül található.

Ha nem zártuk le és nem mentettük az Interface Builder programot, akkor megtesszük, és az XCode-ban megnyitjuk a HelloWorldViewController.h fájlt. A kódnak most valami ilyesmi lesz:

Néhány Objective-C-t már nézünk. Ebben a kódban az UIKit könyvtár import deklarációját látjuk, ahol az UILabel és az UITextField osztályok találhatók. Látjuk, hogyan deklarálják az interfészt, és hogy az az UIKit általános UIViewController-jéből származik-e.

Az interfész kódon belül a következő kódot tartalmazzuk:

Most megmagyarázhatjuk, mit tettünk:

  • A @interface blokkban 2 UILabel és UITextField típusú attribútumot deklaráltunk, 2 változónévvel * címkével és * textFielddel. Előtt jelenik meg az IBOutlet. Mi ez az egész? Elmagyarázzuk magunkat. Az IBOutlet nem egy típusú változó; olyan irányelv, amely segít az Interface Buildernek megismerni ezen UILabel és UITextField típusú változókat. Egyébként ne feledje, hogy az előző cikkben trükköt adtunk Önnek, hogy megismerje a kezelőobjektumok változó típusait (gombok, címke, szövegmező stb.) Az Interface Builderben. Másrészt a * változók neve előtt a * kérdés meglepetést okozhat a Java programozóknak, nem annyira a C-nek ... de megtanulják, hogy így fogsz példányváltozókat írni az Objective-C-be.
  • Az UILabel és az UITextField tulajdonságok deklarálva vannak. nonatomikus és megtartó, amit egyelőre nem fogunk látni, ez a memóriakezeléshez kapcsolódik.
  • Látjuk, hogy deklarálunk egy metódust, az updateText-et. Előtte van egy - jel, amely azt jelzi, hogy ez egy példány metódus, és nem egy osztály metódus (a + jelet megmagyarázzák nekik). Ezt nem lehet elmagyarázni, mert ez az alapvető objektum-orientált programozás ... Ez a módszer nem ad vissza semmit (vagyis érvénytelen), és megkapja az id típusú paramétert. Alapvetően annak az objektumnak az azonosítójára utal, amely az updateTexto metódusunk meghívását okozza, amely frissíti a címke értékét. Sejthetjük, mivel ez a vezérlő lesz maga a gomb ...

Miután ez megtörtént, elkészültünk a 3. lépéssel.


4. lépés: A nézet vezérlőinek bekötése a vezérlő változókhoz.

Ha áttekintjük, egyrészt kifejlesztettük az interfészünket az Interface Builderrel, másrészt a vezérlőkhöz kapcsolódó változókat a HelloWorldViewController.h (a HelloWorldViewController.m vezérlő osztály interfésze) tartalmazza. Azonban még mindig nincs kapcsolat a nézet és a vezérlő között, vagyis nem adtunk utasításokat például az Interface Builderben tervezett szövegmező és az UITextField típusú változó összekapcsolására. osztály. Most ezt a feladatot fogjuk elvégezni. Újra megnyitjuk az Interface Builder programot a HelloWorldViewController.xib hivatkozásra kattintva, kattintsunk a szövegmezőre, és az Inspector palettán a második fülre lépünk (Text Field Connections). Látjuk, hogy van egy szakasz, amelynek neve Referencia Outlets, anélkül, hogy bármi megjelölt volna. Ez azt jelenti, hogy az Interface Builder jelenleg nem ismer semmilyen kapcsolatot e szövegmező és egy osztály IBOutlet (Interface Builder Outlet) között ... de van egy UITextField IBOutlet a HelloWorldViewControllerben, ezért összekapcsoljuk.

Ehhez, amint azt az ábrán láthatjuk, az «Új referenciakimenet» melletti kis körre kattintva áthúzunk a HelloWorldViewController.xib nevű ablak File tulajdonosához. Ez lehetővé teszi, hogy 2 opciót válasszunk, a view (a teljes nézet) és a textField (a változónk). Nyilvánvalóan a textField-et választjuk, és így a szövegdobozunkat az UITextField típusú változóval kapcsoljuk össze. Egyébként a File's Owner vagy a fájl tulajdonosa nem több és nem kevesebb, mint a kontroller osztályunk ...

Megismételjük a műveletet a címkével, a vezérlő változó címkénkhöz kapcsolva. És a gombbal valami másról van szó. Ebben az esetben az updateTexto műveletünkhöz fogjuk kapcsolni, de egy adott eseményhez. Tegye ezt a "Touch Up Inside" eseményen, és válassza az updateTexto módszerünket:

Így már összekapcsoltuk az Interface Builderrel definiált vezérlőket és azokat a változókat, amelyeket a vezérlőbe tettünk. Bezárjuk az Interface Buildert, mindent mentve, és folytatjuk az utolsó lépést, visszatérve az XCode-hoz.

5. lépés. Legfrissebb fejlemények.

Az XCode-ban megnyitjuk a HelloWorldViewController.my fájlt, és feltesszük a következő kódot, hogy az osztályunk így nézzen ki:

Ha jól megnézzük, egyszerűen feltettük a @synthesize blokkot, és a .h, updateTexto felületen deklarált módszer megvalósítását. A kód alatt sok megjegyzéssel ellátott kód lesz.

A @synthesize sor valami hasonlót csinál, mint az OO nyelveken jellemző tipikus getter / setter (hozzáférők / mutátorok) előállítása (tokozás). Szükségünk van rájuk, hogy a tartalom elérje például a szövegmező vezérlőjét.

Az updateTexto módszer, amint láthatja, egyszerűen frissíti a címke szövegét a szövegmező tartalmával. Végeztünk.

Most egyszerűen a Build & Go-t hajtjuk végre, és látni fogja, hogy amikor beír egy szöveges karakterláncot és rákattint a gombra, a címke tartalma frissül. A következő cikkben bemutatjuk az alkalmazásunk fejlesztéseit.


Kövessen minket a Google Hírekben

Hagyja megjegyzését

E-mail címed nem kerül nyilvánosságra. Kötelező mezők vannak jelölve *

*

*

  1. Az adatokért felelős: AB Internet Networks 2008 SL
  2. Az adatok célja: A SPAM ellenőrzése, a megjegyzések kezelése.
  3. Legitimáció: Az Ön beleegyezése
  4. Az adatok közlése: Az adatokat csak jogi kötelezettség alapján továbbítjuk harmadik felekkel.
  5. Adattárolás: Az Occentus Networks (EU) által üzemeltetett adatbázis
  6. Jogok: Bármikor korlátozhatja, helyreállíthatja és törölheti adatait.

  1.   Peter dijo

    Nagyon jó bemutató, nagyon világos és egyszerű.

  2.   rubdotto.com dijo

    Nos, biztosan nagyon dinnye vagyok 🙁, mert ez nem megy nekem. Rögzítettem az értéket egy Stringben, és elveszi a szöveget, de nem rendeli hozzá a címkéhez, legalábbis nem festi, mert megpróbálom látni a label.text-et, és ez kizár a hatókörből ...

  3.   leo2279 dijo

    Kiváló oktatóanyagok, valóban nagyon jól megmagyarázza ezt az iphone fejlesztést, remélem, továbbra is több oktatóanyagot tesz közzé.

    tekintetében

  4.   Mariano dijo

    Szia, minden klassz, de nem működik. Ahhoz, hogy működjön, össze kellett kapcsolnom az interfészkészítő nézetét a kocka nézetével, amint azt megtanítja a szövegmezővel és a címkével. A többit nagyon köszönöm.