Hepo kirjoitti:Tässä jonkunlainen aloittelija kysymys.
Olen tehnyt jonkun matkaa "Your first iPhone OS Application" esimerkkiä ja sitten MoveMe valmista sovellusta tutkaillut ja vähän tehnyt omia muutoksia.
Haluaisin tehdä sellaisen sovelluksen jossa olisi samalla tavalla kuva ladattuna kuin MoveMe esimerkissä, mutta kuvia olisi enemmän kuin yksi eripaikoissa ruutua. Paljon on toki lukematta vielä, mutta asioiden tekeminen itsenäisesti on joskus opettavaista.
Eli kun ensimmäisessä esimerkissä MyViewController luokan olio luodaan delegatessa niin miksei MoveMe luokan oliota luoda vastaavassa paikassa? En löydä sen luontia mistään. MoveMe luokka on periytetty UiView:stä ja MyViewController taas UiViewController luokasta. Mitähän eroa niillä on ja kumpaa kannattaa käyttää? Tarkoitus olisi omassa esimerkissäni laittaa suorakaiteen muotoiset kuvat ja ne olisivat ikään kuin nappeja kuten MoveMe esimerkissä (ottaa vastaan kosketukset) mutta niissä voisi sitä kuvaa päivittää esim. aina kun klikkaisi. Onko tuo jotenkin tyhmä tapa toteuttaa ja löytyykö joko valmis juttu tohon?
MoveMe esimerkissä luodaan samalla tavalla tuo UIViewController instanssi. Luotaessa UIViewController-objektia, annetaan init metodissa parametrina nib tiedosto, josta kyseisen luokan näkymä (UIView) luodaan. Jos avaat MoveMeView.xib tiedoston, ja katsot inspector-ikkunan viimeiseltä välilehdeltä, näet että luokaksi on määritelty tuo MoveMeView. Eli kun UIViewController-objekti luodaan nib-tiedostosta, samalla luodaan nib tiedoston määrittämän luokan instanssi, johon pääsee käsiksi UIViewController-objektin view-propertystä.
Tuon MoveMeView-luokan olion voi luoda myös ohjelmallisesti tuossa samaisessa MoveMeAppDelegatessa:
Koodi: Valitse kaikki
- (void)applicationDidFinishLaunching:(UIApplication *)application {
...
UIViewController *aViewController = [[UIViewController alloc] initWithNibName:nil bundle:nil];
MoveMeView *view = [[MoveMeView alloc] initWithFrame:window.bounds];
view.backgroundColor = [UIColor darkGrayColor];
aViewController.view = view;
[view release];
self.viewController = aViewController;
[aViewController release];
...
}
UIViewController luokassa siis toteutetaan itse toiminnallisuus, ja UIView luokassa piirretään näkymä (MVC (model-view-controller) arkkitehtuuri)
En ihan tarkkaan ymmärtänyt, mitä haluat tavoitella, mutta jos haluat luoda nappeja kuvista, niin UIButton luokallakin tuo onnistuu, käyttäen sen setBackgroundImage:forState: ja setImage:forState: metodeja.
Toivottavasti tämä auttoi yhtään selventämään asioita. Jos selitykseni oli epäselvä, kysy ihmeessä lisää, yritän vastailla parhaani (ja taitojeni) mukaan
