ObjectiveCeeds › iPhone: Application ohne NIB file

iPhone: Application ohne NIB file

Von Manfred Kreß

Seite 1 von 2



Ich gehöre zu den Leuten, die möglichst wenig Entwicklungsarbeit mit dem Interface Builder machen. Auf dem iPhone verzichte ich vollkommen auf NIB bzw. XIB files.

Ausgangsbasis ist ein neues Projekt für eine Windows Based Application. Nachdem das Projekt im Interface Builder angelegt wurde, befindet sich darin ein Application Delegate, die Datei MainWindow.xib, eine xy-Info.plist mit den Bundle Informationen und die main.m. Das sind jedenfalls die Dateien, die jetzt interessant sind. Also weg mit dem Interface Builder. Schritt 1: MainWindow.xib löschen. Schritt 2: In der xy-Info.plist den Key "Main nib file base name" löschen. Damit wäre das nib file schon weg. Allerdings enthielt dieses nib die Instanz des Windows und des ApplicationDelegates. Das AppDelegate ist aber normalerweise unser Einstiegspunkt in eine App. Den brauchen Sie wieder.
int UIApplicationMain (
   int argc,
   char *argv[],
   NSString *principalClassName,
   NSString *delegateClassName
);
UIApplicationMain wird in der main Funktion der App aufgerufen und startet diese. Normalerweise werden hier als principalClassName und delegateClassName nil Werte übergeben. Damit ist PrincipalClass UIApplication und das setzen des AppDelegates wird dem nib überlassen. Schritt 3: Dieser Funktionsaufruf wird nun wie folgt geändert:
UIApplicationMain(argc, argv, nil, @"myAppDelegate");
wobei "myAppDelegate" durch den entsprechenden Klassennamen zu ersetzen ist. Schritt 4: Das Property window des AppDelegates ist jetzt natürlich nil, da kein Window aus dem nib geladen wird. Also muss man dieses Fenster selbst initialisieren. Und zwar in der Methode applicationDidFinishLaunching: des Deleagates - welches jetzt auch schon über den Programmstart informiert wird.
- (void)applicationDidFinishLaunching:(UIApplication *)application {    

	NSLog(@"Hello");
	
	CGRect windowFrame = [[UIScreen mainScreen] bounds];
	UIWindow *theWindow = [[UIWindow alloc] initWithFrame: windowFrame];
	[theWindow setBackgroundColor: [UIColor blueColor]];
	[self setWindow: theWindow];
	[theWindow makeKeyAndVisible];
	[theWindow release];
}
Build and Run! Die App sollte mit einem blauen Fenster starten. Projektvorlage Um diese Schritte nicht jedes mal von Hand machen zu müssen, habe ich mir eine Projektvorlage erstellt die entsprechend angepasst ist. Die iPhone Templates befinden sich im Ordner /Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Project Templates . Hier habe ich die Vorlage für die Window Based App kopiert und entsprechend angepasst. Die Vorlage kann hier heruntergeladen werden. Eigene Projektvorlagen können nach ~/Library/Application Support/Developer/Shared/Xcode/Project Templates im Homeverzeichnis kopiert werden. Eventuell muss der Ordner erstellt werden. Im Project Wizzard stehen dann die eigenen Vorlagen unter "User Templates" zur Verfügung. Nebenbei habe ich bei der Vorlage noch ein paar kleine Anpassungen vorgenommen, damit sie meinen Wünschen und Bedürfnissen etwas besser entspricht.

nächste Seite »
Seite: 1 von 2


iPhone: Application ohne NIB file

Warum ohne Interface Builder?