31.07.2010

Erster Einstieg in iPhone Entwicklung

Voraussetzungen:

  • Xcode 3.x
  • Objective-C Verständnis

View Based Applications

Die meisten iPhone Applikationen sind sogenannte "View Based Applciations", die wir uns zunächst genauer anschauen:

  1. Als erstes starten wir Xcode und öffnen ein neues Projekt mit File -> New Project. Unter iPhone OS suchen wir uns die View-Based Application aus und geben dem Projekt einen Namen.
  2. Wie wir gesehen haben, gab es noch andere Auswahlmöglichkeiten: XCode new project

    • Die Window-Based Application ist ein leeres Projekt für eine Window (Window steht für das Fenster, indem eure Applikation läuft. Die Views sind einzelnen Ansichten oder Bedienelemente, die dann in die Window eingeladen werden können). Will man eine Applikation von Grund auf neu erstellen, ist eine Window-Based Application das richtige. Meist will man aber direkt in Views arbeiten, wo eine View-Based Application komfortabler ist. Eine View-Based Application ist nichts anderes als ein Window-Based Application mit einer vorgefertigten leeren View.
    • Es gibt auch Tab Bar Application und Navigation-Based Application, die Unterstützung für mehrere Views anbieten. In einer Tab Bar Application wechselt man zwischen verschiedenen Views hin- und her. Bei einer Navigation-Based Application folgen die Views einer Baum- bzw. Ordnerstruktur. Es ist aber auch möglich solche Applikationen selber über eine View Based Applciation zu erstellen, was wir auch später tun werden.
    • Für Spiele eignet sich die OpenGL ES Application, bei der man leichte OpenGL-Unterstüzung erhält.


  3. Nachdem Xcode uns ein Projekt erstellt hat, sollten wir es uns einmal genauer anschauen:

  4. XCode left bar
    • Für unsere Applikation liegen alle Dateien in einem Ordner. Xcode macht uns das Leben leichter, indem die Dateien in verschiedenen Gruppen organisiert sind. Zwar sehen sie aus wie Ordner, sind jedoch keine, was man bei der Referenzierung von Dateien beachten muss
    • Unter Classes finden wir Obj-C-Klassen für unsere Controller (Ihr seht Apple legt Wert auf das MVC-Konzept und benennt die Objekte auch demnach). Es gibt eine <Projektname>AppDelegate.h und <Projektname>AppDelegate.m, die unser Window repräsentiert. In dieser Klasse ist das Window referenziert und der vorgefertigte ViewController für die vorgefertigte View, die im Window liegt. In der m-Datei gibt es die Methode ApplicationDidFinishLaunching, in der wir spefizieren können, was nach Start unserer Applikation passieren soll.
    • Unter Classes liegt auch <Projektname>ViewController.h und <Projektname>ViewController.m, die unsere erste View beschreiben. Für jede weitere View, die wir später erstellen, sollte auch neue ViewController Klassen angelegt werden. Views können im Code erstellt werden oder aus einer nib-Datei initialisiert wird (Eine nib-Datei ist ein User Interface, welches mit dem Interface Builder erstellt wurde und in kompilierter Form vorliegt). In der m-Datei sind einigen Methoden auskommentiert, die wir aktivieren können. Die initWithNibName Methode wird aufgerufen, wenn die View aus einer nib initialisiert wird. Die loadView Methode wird aufgerufen, wenn die View aus dem Code initialisiert werden soll. In die viewDidLoad Methode können wir spezifizieren, was passiert, wenn die View zum ersten Mal angezeigt wird.
    • Unter der Gruppe Other Sources befinden sich die main und Präfix-Header, die man unberührt lassen sollte.
    • Unter Resources finden wir schließlich die User Interfaces, die mit dem Interface Builder bearbeitet werden. Es gibt eine für das MainWindow und eins für unseren ViewController. Sie liegen im xib-Format vor, was eine interne XML-Struktur hat. Beim Kompilieren werden daraus nib-Dateien, die dann geladen werden. Hier können später auch noch weitere Views definiert werden.
    • Unter Resources befindet sich auf die Info.plist. Sie definiert Meta-Daten über unsere Applikation.
    • Unter Frameworks befinden sich mitgeladenen Frameworks. Für verschiedene Aufgaben (Adressbuch, SQLite, etc.) können weitere Frameworks eingebunden werden.
    • In Products befinden sich unsere kompilierten Applikationen.


  5. Die generierte Applikation ist schon lauffähig. Dafür klicken wir auf Build and Go. Xcode kompiliert unsere Applikation und startet diese im iPhone Simulator. Wir sehen unsere View, die komplett grau ist.

  6. Als nächstes wollen wir ein obligatorisches Hello World programmieren.

    • Wir definieren uns zunächst die Referenezen für benötigte UI-Steuerelemente im Code. In <Projektname>ViewController.h definieren wir uns einen Button als Property und die Aktion, die ausgeführt werden soll.
      Objective-C Code:
      @interface ViewBasedViewController : UIViewController { IBOutlet UIButton *button; } @property (nonatomic, retain) UIButton *button; - (IBAction) buttonClicked:(id) sender; @end
    • In der entsprechenden m-Klassen implementieren wir die Methoden. Mit @syntesize lassen wir uns automatisch Setter und Getter erstellen.
      Objective-C Code:
      @implementation ViewBasedController @synthesize button; - (IBAction) buttonClicked:(id) sender { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Hello World" message:@"Hello World" delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil]; [alert show]; [alert release]; }
    • Mit einem Klick auf Build sollte das Projekt kompilieren ohne Fehler.
    • Als nächstes können wir das User Interface im Interface Builder erstellen. Dafür öffnen wir die <Projektname>ViewController.xib Datei und starten damit den Interface Builder. Es öffnen sich 3 Fenster: Ein Fenster zeigt die View, ein weiteres zeigt die Elemente der View und die Library, die weitere UIElemente erhält. Es ist sinnvoll zusätzlich das Inspector Fenster aus dem Menü zu öffnen.Interface Builder
    • Aus der Library suchen wir uns einen Round Rect Button heraus und platzieren ihn auf unsere View.
    • Nun müssen wir nur noch die Verbindungen mit unseren Code herstellen. Dem File's Owner teilen wir mit wo sein button ist. Dafür ziehen wir bei gedrückter Control-Taste die Maus vom File's Owner auf das Button und wählen button aus. Dem Button teilen wir nun die auszuführende Methode mit. Dafür ziehen wir wieder mit gedrückter Control-Taste die Maus vom Button zum File's Owner und wählen buttonClicked aus. Die Methode buttonClicked wird automatisch dem Event Touch Up Inside zugeordnet, welche aufgerufen wird, wenn mit dem Finger auf die Taste gedrückt wird.
    • Zusätzlich kann dem Button ein Titel verpasst werden im Inspector Fenster unter "Button Attributes".
    • Damit ist unser Hello World fertig. Mit Build and Go können wir das Ergebnis im Simulator sehen.
Hello World 1Hello World 2

Weitere UIElemente

Beim UIButton handelt es sich um das einfachste Steuerelement. Generell beginnen alle Steuerelementklassen im iPhone SDK mit "UI". Werfen wir mal einen Blick auf weitere Steuerelemente

  • Input & Values: UILabel, UITextField, UISwitch, UISegmentedControl
  • Data Views: UIImageView, UITableView, UITableViewCell, UIScrollView, UITextView, UIWebView
  • Windows, Views & Bars:

Mehrere Views

  • TabBarController
  • NavigationBarController
  • TabBarController und NavigationBarController
Last Update: 25.09.2009 17:53:05
Valid XHTML 1.0 Transitional!Valid CSS!