fbpx Skip to content

Az előző bejegyzésben elkészítettünk egy Hello World alkalmazást, ami tipikusan az első programja minden programozónak bármilyen új környezetben, továbbá kicsit áttekintettük a fejlesztőkörnyezetet és a kapott eszközöket.

Most már ígérem tényleg fogunk kódolni, de ne essetek kétségbe, nem lesz olyan vészes. A mai leírás egy egyszerű program elkészítéséről fog szólni, ami felhasználja az előző bejegyzést is, szóval, aki nem tanulmányozta még át, annak ajánlom, hogy tegye meg mielőtt hozzákezd. Ezt megteheti itt: Előző bejegyzés

iphone_sdk_shift



Az alkalmazás nagyon egyszerű, mégis rá fog világítani néhány alapvető elvre az iPhone programozással kapcsolatban. Egy label és egy gomb fog szerepelni a kijelzőn, és ha megnyomjuk a gombot, a label felirata megváltozik.

Ha eddig nem mondtam volna, akkor minden program fejlesztésénél a Modell-View-Controller elv szerint történik a kivitelezés, tehát a megjelenítés és a modell teljesen elkülönül, és egymás között történő tranzakciókat a vezérlő logika végzi.
Röviden a következőről van szó:

Modell: Olyan osztályok, amik a az alkalmazás adatait tartalmazzák.
View: A kijelzőn megjelenő kép felépítése, ez tartalmazza a kontrollokat, és minden olyan további elemet, amellyel a felhasználó kölcsönhatásba léphet.
Controller: összeköti a modell és a view elemeket, és itt található az alkalmazáslogika, ami eldönti, hogyan fog reagálni a program a felhasználó utasításaira.

Most nem megyek bele az mvc szemléletbe bővebben, erről mindenki találhat bővebb leírást az interneten.

Irány a fejlesztés!
Indítsuk el az Xcode fejlesztőkörnyezetet, és hozzunk létre egy View based alkalmazást a File/New Project menüpont segítségével. Adjuk neki a ButtonTest nevet. Ha mindent jól csináltunk akkor hasonló kép fog fogadni minket.

1

Ahhoz, hogy egy, a View-n megjelenő kontrollt elérjünk, szükségünk lesz hozzá egy mutatóra, amit IBOutlet névvel azonosíthatunk. Nyissuk meg a ButtonTestViewController.h fájlt, és írjuk bele az új sorokat:

Picture3

A @property sorra azért van szükségünk, hogy ne kelljen külön set és get metódust írni minden egyes osztályváltozóhoz.
Ha ezzel megvagyunk, akkor már majdnem el is készültünk a header fájllal, azonban mit jelenthet az –(IBAction)Gombnyomas:(id)sender sor? Ha egy gombhoz szeretnénk hozzárendelni valamilyen eseményt, akkor azt szükséges előre definiálni. Ez természetesen egy metódus képében jelenik meg a controller osztályban. Ehhez a Gombnyomas-hoz fogjuk a gombunk megfelelő eseményét kötni.

Ha ezzel megvagyunk, akkor nyissuk meg a ButtonTestViewController.m fájlt. Ez az implementációs fájl, amibe a kódunkat fogjuk írni. Mivel a header fájlban definiáltunk egy property-t, itt szükségünk van a párjára, a @synthesize-ra. Ezzel mondjuk meg a fordítónak, hogy hozza létre a get és a set metódust. A második módosítás a Gombnyomas metódus implementálása.

Illesszük be a következő sort az @implementation ButtonTestViewController sor alá:

@synthesize kiiras;

Itt azt szeretnénk hogy a kiiras nevű label text tulajdonsága megváltozzon, amit a úgy érhetünk el, hogy létrehozunk egy új stringet, majd a kiiras.text-nek az új stringet adjuk
Az utolsó változtatás pedig a label felszabadítása a dealloc metódusban, mivel szeretnénk hogy a programunk jól kezelje a memóriát.
Az egész ButtonViewController.m fájl így fog kinézni:

Picture4

Most hogy végeztünk a kódolással, irány az interface builder, és építsük fel a programunk felhasználói felületét!
Kattintsunk duplán a ButtonTestViewController.xib fájlra, amivel elindíthatjuk az InterfaceBuilder-t.
Húzzunk a view-ra egy labelt és egy round rect button-t. A label feliratát változtassuk meg az attributes inspector-ban arra hogy „Még nem nyomtak meg!”, a gombét pedig arra hogy „Gomb”. Ekkor körülbelül így kell kinéznie a View ablaknak.

Picture7

Most már csak két dolog van hátra és készen is leszünk. Ahhoz hogy a program tudja melyik outlethez mi tartozik, arra van szüksége hogy mi összekössük őket. Jelöljük ki a label-t, és válasszuk a Tools/Connections Inspector menüpontot. Itt a „New referencing Outlet” felirat melletti kis karikára kattintva húzzuk az egeret egészen a ButtonTestViewController.xib fejlécű ablakra, és azon belül is a File’s Owner feliratra.

Picture11

Ott a felugró ablakban pedig válasszuk a „kiiras” opciót. Most kattintsunk a gombra, és hozzuk be újra a connections inspector-t. Itt láthatjuk a gombhoz kapcsolódó események listáját.

Picture6

Nekünk most a Touch Up Inside kell, ami akkor hívódik meg, amikor a felhasználó a gombon emeli fel az újját. Ezt is húzzuk a File’s Owner-re, ahol most a Gombnyomas-t valasszuk a felugró ablakból.

Mentsük el az fájlt, és zárjuk be az Interface Buildert. Most már tényleg csak egy dolog maradt hátra: futtassuk az alkalmazást!
Ha mindent jól csináltunk, valami hasonlót kell látnunk mint ez:

Picture12

Aki nem bírna magával meglátogathatja a blogomat is.

Olvasd el a hozzászólásokat is

21 Comments

  1. Jo reggelt.most már csak a gepemet kellene lecserelni egy macre.

  2. @Andras: ha netán lecserléd és kevés a 2giga ram szóljá,me még van 2 ramom eladó 😀

  3. Hm:)

  4. @Andras: Hogy ne legyen hiányérzeted 😀
    aptana.com/iphone

  5. De jó nektek akinek apple gépe van!

  6. @nico: Neked is ajánlom az oldalt mert az jo winfosra ! Neked is jo lesz 😀

  7. Ginopapa.köszönöm

  8. kicsit ciki
    index. hu/tech/hardver/2009/07/02/35_fok_folott_kikapcsol_az_iphone/

  9. @zoltan: megnéztem a linket…és tudtommal ez már a 3Gben is megtalálható, csak nem 35foknál 😀
    Viszont az, hogy -17 foknál ne próbálkozzunk a használattal :S Most akkor szerencsétlen oroszok…ott lesz még felháborodás :S
    Remélem nállunk nem lesz ilyen időszak… 🙂

  10. hát őszintén szólva ez az iphone programozás engem is érdekelne, annyira nem is vagyok sügér hozzá, mer már volt szerencsém más nyelvekben progit írni, és ahogy látom alapjaiban ugyanolyan! 🙂

  11. @Ginopapa:
    Köszi a linket. Már régóta kerestem fejlesztőkörnyezetet windows alá, de eddig nem volt semmi.
    Most tölti, remélem működik is rendesen.

  12. Amugy egesz sok pcre is fel lehet rakni az osxet. Nekem miota fent van a 10.5.7 gyakorlatilag csak játszani megyek át windowsra 🙂 googlebe osx86 és wiki, aztán onnan rengteg leiras lesz, milyen hardvereken megy, mitlyen kextet kell leszedni stb.

  13. @Ginopapa: Ez “csak” web alkalmazások fejlesztéséhez jó.

  14. Sziasztok ! Lehet hogy mérgesek lesztek rám , de lenne egy számomra Fontos kérdésem felétek !
    Valaki mondjon már légyszíves nekem olyan videó konvertáló programot ami , a videó méretét is le csökkenti és létezik olyan program , amivel a fájljaimat kóddal letudom védeni , hogy csak én tudjam megnyitni ?

    Előre is köszönöm és elnézést kérek !

  15. @skl: 800-as ramod van?

  16. @Cyberbird: szia!

    én leszedtem egy osx-et windiws-ra, 10.5.6. vmiér az istennek se akar bootolni a dvd-rol, irtam már 3at. lehet,h maga a lemez a szar. nem tudnál dobni nekem egy linket arrol, h hohhan tudom leszedni, ami neked van?

    elore is ksozi szépen

  17. GINOPAPA + többiek!
    Felesleges letöltenetek, mert az nem valódi (natív) iPhone alkalmazásokra való, hanem már a 1.0-ban bemutatott web applicationre. Valójában olyan weblapokat írhatsz, amik hozzáférnek a telefonkönyvhöz, meg a naptárhoz.

  18. Halix: veszel egy macet és mindkettőre azonnal választ ad, amint kiveszed a dobozból 🙂
    És még iPhone-ra is fejleszthetsz rajta 😀

  19. @Teddy: Akkor ez nem jött be ! Igaz nem lenne rossz ha winfoson is lehetne fejleszteni mert ahogy nézem hasonlo mint a flash irása és abban elég jo vagyok ! Lenne egy két ötletem amit megoldanék ha lehetöség lenne rá !

  20. Sorry OFF-ert
    de szeretnek en is csatlakozni a fejleszteshez illetve kiprobalni a program ill jatek irast kis gyakrolatom van benne de sajnos windows 7em van most es macen lehet csak vegre hajtani megprobaltam felrakni ezt a verziot Kalyway_10.5.2_DVD_Intel_Amd de nem megy.tudna nekem vki segiteni osx leopard installban ill honnan szedjem le a megfelelo verziot.
    toshiba laptop intel core duo 2gb rammal.satellite l40-17u a tipusa a laptopomnak.
    elore is koszonom a segitseget.
    Byez all!

    Aren


Add a Comment