iPhone SDK Tutorial deutsch 6 – Storyboard Part 1 – Grundlagen

Im iOs 5 SDK gibt es ein fantastisches neues Feature: Das Storyboard. In diesem mehrteiligen Tutorial zeige ich was das ist und wie man es benutzt.

Hinweis: Du benötigst für dieses Tutorial mindestens Xcode Version 4.2

Mit Hilfe der Storyboards lässt sich das Interface deiner App viel leichter gestalten. Zuvor hat man .xib-Dateien für das Interface benutzt, welche das Aussehen jeder Szene einzeln enthielten. Mit Storyboards muss man weniger Code schreiben, und kann mit einer einzigen Datei, das komplette Interface gestalten. In diesem Part zeige ich die Grundlagen dieser Neuerung.

1. Das Projekt erstellen

Öffne Xcode und erstelle ein neues Projekt. Wähle dazu das “Single View Application”-Template (Mehr zu den neuen Templates erfährst du hier). Klicke auf Next und gibt wie gewohnt bei Product Name den Namen des Projekts an, z.B. “Tutorial6″. Wichtig ist, dass du bei Device Family die Option iPhone auswählst und den Haken bei Use Storyboard und Use Automatic Reference Counting setzt.

Klicke wieder auf Next und gib den Speicherort des Projekts an.

2. Das Projekt

Schauen wir uns zuerst einmal um: Im Project Navigator in der linken Seitenleiste befinden sich die Dateien des Projekts. Bekannt sind uns bereits die Dateien AppDelegate.h, AppDelegate.m, sowie der ViewController. Allerdings fehlt da eine Datei: MainWindow.xib. Das liegt daran, dass wenn wir das Storyboard verwenden, wir keine .xib-Dateien benötigen. Somit wird auch MainWindow.xib überflüssig. Dafür ist eine andere Datei dazugekommen: MainStoryboard.storyboard. Bevor wir uns diese Datei genauer ansehen, werfen wir nochmal einen Blick auf die Projekt-Datei. In dieser wird nämlich angegeben, wo sich das Interface der App befindet. In unserem Fall in MainStoryboard. Wolltest du eine andere Interface-Datei verwenden, so könntest du hier angeben welche.

3. Das Storyboard

Öffne jetzt die Datei MainStoryboard.storyboard. Daraufhin erscheint der Storyboard Editor. Dieser erinnert stark an den Interface Builder und tatsächlich funktioniert er ganz ähnlich.

Rechts unten befindet sich die Library von der wir, wie gewohnt, Objekte in dem View ziehen können. Darüber befindet sich die Leiste mit den verschiedenen inspectors, in welchen man die Eigenschaften eine Objekts ändern kann. Im Editor-Bereich befindet sich bereits ein View Controller. Unter dem View ist eine schwarze Leiste, das Dock. Möchte man den View Controller auswählen, klickt man ganz einfach auf dieses Dock. Daraufhin erscheinen zwei Objekte: das View Controller-Objekt und das First Responder-Objekt. In diesem Part sind beide für uns noch nicht von großer Bedeutung.

4. Der erste View Controller

Fangen wir an das Interface der App zu erstellen. Suche in der Library den Round Rect Button und ziehe ihn in die Mitte des Views. Beschrifte den Button wie hier:

Wir können die App schonmal probehalber ausführen, um zu sehen ob alles funktioniert… Der Button wird wie gewollt angezeigt.

Bevor wir nun dem Button eine Action zuweisen, erstellen wir noch einen Navigation Controller. Das ist denkbar einfach: Klicke auf das Dock des View Controllers, um ihn auszuwählen und gehe in der Menüleiste von Xcode auf
Editor -> Embed In -> Navigation Controller.
Daraufhin erscheint neben unserem ersten View Controller ein Navigation Controller. Die beiden Controller sind mit einer sog. Relationship miteinander verbunden.

Außerdem wird im Document Outline (linke Seitenleiste im Editor) eine neue Sektion für den Navigation Controller erstellt. Diese enthält außerdem das Relationship-Objekt.
Der Vollständigkeit halber ändern wir noch die Überschrift des Views. Wähle dazu die Navigation Bar des View Controllers (rechter Controller) aus und gib im Attributes inspector unter Title “Hauptmenü” ein.

Wenn wir die App nun erneut ausführen wird am oberen Rand des Views die Navigation Bar angezeigt.

5. Einen neuen View Controller erstellen

Wenn der Button angeklickt wird, soll ein neuer View angezeigt werden. Dazu fügen wir einen neuen View Controller hinzu. Um das mit Hilfe von .xib-Dateien zu realisieren, müssten wir viel Code schreiben und viele Verknüpfungen im Interface Builder erstellen. Mit dem Storyboard geht das ohne eine Zeile Code mit wenigen Mausklicks.

Zuvor verschaffen wir uns allerdings noch etwas mehr Überblick. Doppelklicke dazu auf eine leere Stelle im Editor oder klicke auf das kleine Lupen Symbol mit dem Minus in der rechte unteren Ecke des Editors. Damit wird heraus gezoomt und wir haben Platz einen weiteren View Controller hinzu zu fügen.
Ziehe aus der Library einen View Controller und platziere ihn neben dem anderen.

Als nächstes klicken wir mit gedrückter ctrl-Taste auf den Button im Hauptmenü-View Controller, halten die Taste gedrückt und ziehen den blauen Faden auf den neuen View Controller. Im daraufhin erscheinenden Dialog wählen wir Push. Dadurch, dass wir dies auswählen, erscheint im zweiten View automatisch eine Navigation Bar und es wird sogar ein Zurück-Button angelegt (sichtbar in der App), mit dem wir wieder zum ersten View zurückkehren können. Und wir müssen dafür gar nichts mehr machen.

Führe die App aus, um es auszuprobieren.

6. Den View anpassen

Hinweis: Um neue Objekte in den View Controller hinein zu ziehen, müssten wir nun wieder heran zoomen.

Zum Schluss zeige ich noch, wie man einen View anpasst (z.B. die Hintergrundfarbe ändert), da das im Storyboard Editor (minimal) anders ist, als im IB. Damit wir den View anpassen können, müssen wir ihn erstmal finden ;-) . Er befindet sich innerhalb des View Controllers. Um ihn anzuzeigen, klicken wir im Document Outline unter der Sektion des “Spieler-Liste”-View Controllers auf den grauen Pfeil neben View Controller – Spieler-Liste.

Daraufhin erscheint das View-Objekt, welches du nun im Attributes inspector nach Belieben anpassen kannst.

7. Schluss

Ich glaube der enorme Vorteil des Storyboards ist ersichtlich: Wir haben ohne eine Zeile Code zu schreiben einen Navigation Controller und einen zusätzlichen View Controller implementiert.
Im nächsten Part werden wir noch eine Table View hinzufügen: iPhone SDK Tutorial deutsch 6 – Storyboard Part 2 – Table View.

Den Code für dieses Tutorial kannst du hier downloaden: iPhone_SDK_Tutorial_deutsch_6-Storyboard_Part_1-Grundlagen

Wenn du möchtest kannst du den Blog abonnieren oder mir auf Twitter folgen.

This entry was posted in iPhone SDK, Tutorial and tagged , , . Bookmark the permalink.

11 Responses to iPhone SDK Tutorial deutsch 6 – Storyboard Part 1 – Grundlagen

  1. andreas says:

    Hallo,

    erstmal danke für deine Tutorials. Die sind echt super :D

    Habe eine Frage. Ich habe einen Navigation Controller mit Tab bar Item und möchte nun von dort aus über ein Button einen neuen View Controller aufrufen.

    Arbeite ich mit push öffnet sich der neue View Controller nicht.
    Nehme ich modal öffnet sich der neue View Controller aber die Tab bar und der zurück Button fehlen.
    Für den neuen View Controller soll kein neues Tab bar item angelegt werden.

    Danke schon mal für deine Hilfe.

    Andraes

    • andreas says:

      hab ein Navigation Controller vor geschaltet dann geht es. Kannst du mir vll. erklären warum das so ist?

      • Felix says:

        Hallo,

        Der Unterschied zwischen Modal und Push ist, dass wenn man eine Push Segue bei einem View Controller mit Navigation Controller verwendet, der nächste View Controller, also der Ziel-View-Controller, auch mit diesem Navigation Controller ist.
        Der Segue-Style Push kann deswegen nur verwendet werden, wenn der View Controller in einem Navigation Controller enthalten ist. Deshalb hat es bei Dir ohne Navigation Controller nicht funktioniert.
        Bei Modal ist dies nicht der Fall. Da wird der alte View Controller einfach durch den neuen ersetzt.

        Das klingt ziemlich kompliziert, man muss sich aber nur merken, dass Push nur mit Navigation Controller funktioniert und dann die Navigation Bar erhalten bleibt und man Modal mit und ohne Navigation Controller verwenden kann, die Navigation Bar aber dann nicht erhalten bleibt.

        Ich hoffe die Erklärung ist einigermaßen verständlich. Wenn nicht gib mir Bescheid :-) .

        Grüße
        Felix

  2. Yannick says:

    Hey aber was ist nun, wenn ich eine Bedingung hinzu fügen möchte? z.B möchte ich erst auf den nächsten view wenn ein int wert auf 10 ist zuvor soll nichts passieren wenn ich auf den Button drück. Wie kann ich den view ansprechen bzw verhindern das er auf den view lädt. Wenn ich das ganze mit code geht es einfach aber so…

    • Felix says:

      Hallo,

      hier ein Möglichkeit, um das hinzubekommen:
      1. Lösche die Segue, die vom Button zum neuen View Controller führt.
      2. Klicke mit gedrückter ctrl-Taste auf den Anfangs-View-Controller im Document Outline und ziehe den blauen Faden auf den Ziel-View-Controller (auch im Document Outline). Wähle dann bspw. Push.
      3. Wähle die Segue aus und gib im Attributes inspector bei Identifier zum Beispiel “Segue” ein und drücke Enter.
      4. Erstelle dann eine IBAction für den Button bei dem der Wechsel stattfinden soll.
      5. In dieser Action kannst Du dann deine Bedingung einfügen und den anderen View Controller mit
      [self performSegueWithIdentifier:@"Segue" sender:self]; aufrufen.

      Wenn Du noch Fragen dazu hast, gib mir Bescheid.
      Ich hoffe das hilft dir.

      Grüße
      Felix

  3. Pingback: iPhone SDK Tutorial deutsch 6 – Storyboard Part 3 – Detail View und Tab Bar Controller | iOsDevGermany

  4. Pingback: iPhone SDK Tutorial deutsch 6 – Storyboard Part 2 – Table View | iOsDevGermany

  5. Viktor says:

    Tolle Tutorials! Kann es kaum erwarten bis der nächste erscheint. Vielen Dank für die Mühe und weiter so!

  6. Joel says:

    Storyboard klingt ja schonmal gut. Aber ich komm mit den Actions und Outlets überhaupt nicht klar :(

    • Felix says:

      Hallo,
      danke für Dein Kommentar. Keine Sorgen, ich werde noch weitere Tutorials über Storyboard schreiben und darin werden die Actions und Outlets nochmal behandelt.
      Gruß
      Felix

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*


− drei = 4

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>