awakeFromNib

BecomeAnXcoder – awakeFromNib

Bevezető

Az Apple nagyon sokat dolgozott annak érdekében, hogy neked sokkal könnyebb legyen programokat írnod. A példa alkalmazásban sem kellett azzal törődni, hogyan rajzoljuk ki az ablakot és a gombokat a képernyőre sok egyéb más dolog közepette.

A két legfontosabb framework (keretrendszer) amelyek tartalmazzák ezeket a dolgokat a Foundation Kit framework és az Application Kit. Az előbbi a 4. fejezet [12]-es példájában lett beimportálva és a nem grafikus felhasználói felületet használó programok legtöbb szolgáltatását tartalmazza. A második a képernyőn látható objektumokat és a felhasználó interakciós mechanizmusokat szolgáltatja. Mindkét keretrendszer igen jól dokumentált.

Térjünk vissza a GUI alkalmazásunkhoz. Tegyük fel, hogy szeretnénk ha a programunk egy bizonyos számot már rögtön akkor megjelenítene a szövegmezőben, amikor a program betöltődik és az ablak első alkalommal megjelenik.

Gyakorlat

Az ablakhoz tartozó összes információ egy nib fájlban tárolódik (a nib a NeXT Interface Builder-ből származó rövidítés, ahogy azt korábban már láttuk). Jó ötletnek tűnik, hogy a számunkra szükséges metódust az Application Kit tartalmazhatja. Nézzük meg, hogyan szerezhetünk több információt erről a framework-ről.

Az Xcode-ban válasszuk a Documentation-t a Help menüből. Kapcsoljuk be a Full-Text Search opciót a fejlécben. Ezután írjuk be az Application Kit-et a kereső mezőbe és indítsuk el a keresést.

Az Xcode több eredményt is ad erre a keresésre. Van közöttük egy dokumentum, aminek a neve: Application Kit Framework Reference. Ezen belül megtalálhatod az általa biztosított szolgáltatásokat. A Protocols alcím alatt található egy link, aminek a neve NSNibAwaking. Ha erre kattintasz, akkor megkapod az NSNibAwaking osztály dokumentációját.

NSNibAwaking Protocol Objective-C Reference
(informális protokoll)

Framework /System/Library/Frameworks/AppKit.framework
Deklarálás helye AppKit/NSNibLoading.h
Kisérő dokument Erőforrások beolvasása

Protokoll leírás

Ez az informális protokoll egy egyszerű metódusból áll: awakeFromNib. Ezt a metódust az osztályok arra tudják használni, hogy alapállapotokat állítson be közvetlenül azután, hogy az objektumok betöltődtek egy Interface Builder archívumból (nib fájl).

Amennyiben beillesztjük ezt a metódust, ez akkor lesz meghívva, amikor az objektumunk betöltődött az ő nib fájljából. Ezért ezt pontosan arra tudjuk használni, ami a célunk: megjeleníteni egy értéket a szövegmezőben a betöltődés pillanatában.

Természetsen nem azt akarom ezzel mondani, hogy mindig ilyen egyszerűen meg lehet találni a helyes metódust. Gyakran sokkal több keresésre és a keresőszavak kreatív használatára van szükség annak érdekében, hogy megtaláljuk az ígéretes metódust. Ennek érdekében elengedhetetlenül szükséges, hogy minél alaposabban megismerd mindkét framework dokumentációját, hogy legyen egy áttekintésed arról, milyen osztályok és metódusok állnak a rendelkezésedre. Természetesen lehetetlen egyszerre mindent megismerni, de minél többet tudsz , annál nagyobb segítség ez számodra, hogy megtervezd a programod működését.

Nos, megtaláltuk a szükséges metódust, nincs más dolgunk, mint ennek a beillesztése a MAFoo.m implementaciós fájlba [1.15].

//[1] 
#import "MAFoo.h" 
@implementation MAFoo
 - (IBAction)reset:(id)sender 
{
     [textField setIntValue:0]; 
}
 - (IBAction)setTo5:(id)sender 
{
     [textField setIntValue:5]; 
}
 - (void)awakeFromNib	// [1.15] 
{
     [textField setIntValue:0]; 
}
 @end

Amikor az ablak megnyílik, az awakeFromNib metódus automatikusan meghívásra kerül. Ennek eredményeképpen a szövegmezőben megjelenik egy nulla kezdőérték.

eredeti oldal