dimanche 2 mai 2010

Prima aplicatie iPhone (de incalzire)

Desigur, pentru cei ce vor sa invete pentru prima oara sa programeze pentru iPhone,se recomanda traditionala aplicatie "Hello World!". Acest exercitiu are ca obiectiv familiarizarea cu cateva instructiuni din libmajul C-Object. Se presupune ca mediul de dezvoltare XCode cu SDK este deja instalat pe Mac.
Mai intai si intai, trebuie creat un proiect nou. Pentru aceasta, lansam XCode. Apoi, Select File > New Project sau Apple Key + Shift + N pentru a lansa fereastra NewProject. Aceasta fereastra, cum apare in figura de mai jos, are doua zone.In partea stanga se selecteaza zona de Applications pentru iPhone OS. Se observa ca in partea dreapta vor aparea o serie de iconite. Se va selecta cea cu View-based Application (Aplicatie cu afisaj de baza). Apoi se va introduce numele proiectului si zona unde va fi inregistrat pe harddisk.Numele proiectului va fi helloworld. Dupa crearea lui, o fereastra se va afisa ca cea de mai jos.
Se observa ca au aparut patru fisiere in pachetul Classes. Este tipic C-Oject care imbina limbajul C cu notiunile de POO.

helloworldAppDelegate.h
helloworldAppDelegate.m
helloworldViewController.h
helloworldViewController.m

Fisierul antetului delegat contine o referinta la obiectul UIWindow (linia 14) ce controleaza toate interactiunile utilizatorului cu aceasta aplicatie si gestioneaza toate componentele unei interfete. Deasemenea contine o referinta la helloworldViewController (lina 15) care gestioneaza afisarea programului nostru.
In fisierul sursa aplicatiei delegate (helloworldAppDelegate.m) se afla o metoda auto-generata: applicationDidFinishLaunching. Aceasta este invocata cand aplicatia este incarcata/lansata. In aceasta metoda se adauga obiectele helloworldViewController la UIWindows si se vor face vizibile;

linia 22 [window addSubview:viewController.view];
linia 23 [window makeKeyAndVisible];

Interfata utilizatorului iPhone SDK respecta arhitectura modelului de proiectare MVC (Model View Controller). Astfel fiecarui afisaj (view) ii corespunde un obiect View Controller Object. XCode a creat un afisaj (view) automat legat la helloworldViewController. Este definit in fisierul helloworldViewCotroller.xib.Pentru a utiliza evenimentele generate de afisaj trebuie sa se creeze as numitele controloare (controls)/interpretoare. De notat ca aceste controloare se pot realiza utilizand aplicatia Interface Bulider.
Ca sa adaugam controloarele si interpretoarele de evenimente deschidem fisierul helloworldViewController.h si intre acoladele definitiei iterfetei helloworldViewController se vor adauga urmatoarele linii:

IBOutlet UIButton *button;
IBOutlet UILabel *label;
IBOutlet UIView *myView;
In acest fel s-a definit un afisaj, un buton si o eticheta-text pentru a fi vizualizate pe ecranul iPhone-ului. Dupa ce s-au definit aceste variabile, trebuie adaugat cum se vor interpreta actiunile diferitelor evenimente pentru buton, afisaj sau eticheta-text. Deci, dupa acolade se vor adauga urmatoarele linii:

linia 11 -(IBAction)handleEvent:(id)sender;
linia 12 @property (nonatomic,retain) UIButton *button;
linia 13 @property (nonatomic,retain) UILabel *label;
linia 14 @property (nonatomic,retain) UIView *myView;

Mai intai se adauga o sinteza a celor trei elemente UI pentru a crea metode de tip getter si setter (a se vedea programarea orientata pe obiecte). Urmatoarele linii vor fi introduse dupa linia 11 @implementation helloworldViewController in fisierul helloworldViewController.m .

@synthesize button;
@synthesize label;
@synthesize myView;

In acest moment se va cauta in fisier "Implement loadView if you want to create a view hierarchy programmatically." si se va de-comenta metoda loadView ce urmeaza acestei linii. Se va adauga urmatoarele linii ale metodei pentru a crea butonul si eticheta-text.
linia 1 - (void)loadViewlinia 2 {
linia 3 // creaza si configureaza afisajul
linia 4 CGRect cgRct = CGRectMake(0.0, 0.0, 480, 320); //defineste marimea si pozitia afisajului
linia 5 myView = [[UIView alloc] initWithFrame:cgRct]; //initializeaza afisajul
linia 6 myView.autoresizesSubviews = YES; //permite sa adapteze marimea elementelor in afisaj
linia 7 self.view = myView;

linia 8 // creaza un UIButton (UIButtonTypeRoundedRect) si setarile de rigoare
linia 9 button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
linia 10 button.frame = CGRectMake(100, 100, 100, 50); // marimea si pozitia butonului
linia 11 [button setTitle:@"Add" forState:UIControlStateNormal];
linia 12 button.backgroundColor = [UIColor clearColor];
linia 13 button.adjustsImageWhenHighlighted = YES;

linia 14 //adauga descriptorul actiunii si seteaza clasa curenta - tinta
linia 15 [button addTarget:self action:@selector(action:) forControlEvents:UIControlEventTouchUpInside];

linia 16 //Afisare buton
linia 17 [self.view addSubview:button];

linia 18 //crearea etichetei
linia 19 cgRct = CGRectMake(100, 170, 100, 50); //define size and position of label
linia 20 label = [[UILabel alloc] initWithFrame:cgRct];linia 21 label.text = @"Hello World";

linia 22 //afisarea etichetei
linia 23 [self.view addSubview:label];
linia 24 }

Se compileaza si se ruleaza click-and pe Build and Go.

Aucun commentaire:

Enregistrer un commentaire