Home Tutorials Anfänger HelloWorld 03 - Info-Button und Alert-Dialog

iPhone Gewinnspiel

HelloWorld 03 - Info-Button und Alert-Dialog PDF Drucken E-Mail
Share
Geschrieben von: Philipp   
MONDAY, 03 NOVEMBER 2008 07:11
Beitragsindex
HelloWorld 03 - Info-Button und Alert-Dialog
2. Info-Button eine Funktion zuweisen
3. Alert-Dialog erstellen und Copyright Informationen anzeigen
4. Abschluß
Alle Seiten
Im diesem kleinen Tutorial möchte ich Euch ein wenig an Buttons und Alert-Dialoge heran führen. Wir werden dabei das bestehende Projekt aus meinem 2. Tutorial "Mehrsprachige Programme entwickeln" um einen Info-Button erweitern. Wenn der Anwender dann auf diesen klickt, wird ein kleiner Dialog, welcher Eure Copyright Informationen zeigt dargestellt.

Wie immer gibt es am Ende des Tutorials auch das dazugehörige Xcode-Projekt zum download.

Also auf gehts:

1. Info-Button erstellen


Als erstes werden wir den Info-Button in die Navigationsleiste einbauen. Sucht bitte die Datei HelloWorldAppDelegate.m in der Projektübersicht und öffnet diese. Sucht innerhalb dieser Datei die Zeile "[navBar pushNavigationItem:title animated:true];"

Um nun in der Navigationsleiste einen Info-Button zu bekommen, fügt Ihr bitte unterhalb der eben gesuchten Zeile folgenden Code. Ich werde diesen dann auch gleich erklären.

// einen Button vom Typ info button erzeugen
UIButton* infoButton = [UIButton buttonWithType:UIButtonTypeInfoLight];

// wir legen fest, welche Funktion aufgerufen wird, wenn der button angeklickt wird
[infoButton addTarget:self action:@selector(infoViewAction) forControlEvents:UIControlEventTouchUpInside];

// der button soll in der Navigationsleiste zu sehen sein
// also erstellen wir aus dem button ein UIBarButtonItem Objekt um dieses auf der Navigationsleiste abzulegen

UIBarButtonItem *buttonItem = [[UIBarButtonItem alloc] initWithCustomView:infoButton];

// jetzt fügen fir das neue UIBarButtonItem der Navigationsleiste hinzu
title.rightBarButtonItem = buttonItem;

// die interne Speicherverwaltung für das ButtonItem haben wir an die Navigationsleiste abgegeben
// dadurch können wir den Anspruch auf den "Besitz" dessen abgeben

[buttonItem release];

Zur Erklärung:
In der ersten Zeile erzeugen wir ein Button Objekt und geben diesem dem Namen infoButton. Der Button soll das Aussehen eines iPhone typischen Info-Buttons haben, also legen wir als Type UIButtonTypeInfoLight fest.

Die zweite Zeile zeigt wie diesem neuen Button eine "Action" also Funktion zugeordnet wird, welche aufgerufen wird, wenn der Anwender auf den Button klickt. Der Name dieser Funktion ist infoViewAction. Zu finden soll diese innerhalb der Klasse sein, daher das self. Da wir möchten, das diese Funktion nur aufgerufen, wenn der Button auch tatsächlich angeklickt wird, legen wir als Event UIControlEventTouchUpInside. Die eigentliche Funktion werden wir im nächsten Schritt erstellen.

In der dritten Zeile erstellen wir ein UIBarButtonItem Objekt namens buttonItem. Dieses erstellen wir mit unseren Button (infoButton) als Bestandteil. Wir benötigen dieses Objekt, um dann den Button auch der Navigationsleiste hinzu fügen zu können.

Die 4. Zeile zeigt dann, wie der Button im Endeffekt der Navigationsleiste hinzugefügt wird, und zwar auf der rechten Seite (rightBarButtonItem).

Zu guter letzt ist es für das Speicherhandling wichtig Besitzansprüche auf das UIBarButtonItem wieder abzugeben. Zu diesem Thema belest Euch bitte zum Thema Speicherverwaltung unter Objective C bzw. Cocoa - eine gute Erkärung dazu gibt es z.B. hier: http://wiki.osxentwicklerforum.de/doku.php?id=wiki:speicherverwaltung.

Gut, wenn Ihr jetzt schon mal das aktuelle Projekt baut und im Simulator testet (Apfel+R) seht Ihr, dass in der Navigationsleiste nun der Info-Button sichtbar ist.



Klickt Ihr auf diesen stürtzt die Anwendung ab. Das liegt daran, das wir beim Erstellen des Buttons gesagt haben, das eine Funktion namens infoViewAction aufgerufen werden soll. Diese gibt es aber noch gar nicht. Erstellen werden wir sie im nun folgenden Schritt.


2. Info-Button eine Funktion zuweisen

Erstellt also bitte nun eine neue Funktion namens infoViewAction innerhalb von HelloWorldAppDelegate.m wie folgt:
/**
 * Diese Funktion wird aufgerufen, wenn der Anweder den info button drückt
 **/

- (void) infoViewAction
{
  // noch kein Inhalt
}

Wenn Ihr jetzt die Anwendung im Simulator startet und dann auf den Button drückt, stürzt das Programm schon mal nicht mehr ab, da es nun die Funktion gibt. Jedoch passiert nichts, da die Funktion selber einfach noch nichts macht. Darum kümmern wir uns jetzt.



3. Alert-Dialog erstellen und Copyright Informationen anzeigen

Wie Eingangs erwähnt, möchten wir, das nach dem Drücken des Info-Buttons ein Dialog mit Copyright-Informationen erscheint. Ich denke das einfachste wäre ersteinmal ein sogenannter "Alert-Dialog". Diesen erstellen wir mit Hilfe der Klasse UIAlertView innerhalb unserer neuen Funktion wie folgt (fett gedrucktes ist neu):
/**
 * Diese Funktion wird aufgerufen, wenn der Anweder den info button drückt
 **/

- (void) infoViewAction
{
  // ein neuer Alert Dialog
  UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Copyright"
                                                  message:@"©2008 - [Dein Name].\r\nAlle Rechte
                                                          vorbehalten."
                                                 delegate:nil
                                        cancelButtonTitle:@"Schließen"
                                        otherButtonTitles:nil];
 
  // jetzt zeigen wir diesen auch
  [alert show];
 
  // der Anwender hat an dieser Stelle den Dialog bestätigt,
  // somit können wir ihn aus dem Speicher entfernen.

  [alert release];

}

In der ersten Zeile erstellen wir den Dialog. Dabei geben wir einen Dialog-Titel "Copyright" und eine Nachricht "©2008 - [Dein Name].\r\nAlle Rechte vorbehalten." an. (Ersetzt "[Deine Name]" mit euren Namen und das "\r\n" bewirkt übriegens einen Zeilenumbruch).
Der Dialog-Button zum "wegdrücken" des Dialoges erhält den Titel "Schließen". Weitere Knöpfe könnten wir durch otherButtonTitles definieren, das brauchen wir aber für unseren einfach Zweck im Moment nicht.

Wenn wir jetzt die Anwendung erneut starten und auf den Info-Button drücken, sehen wir einen wunderschönen Alert-Dialog mit Copyright Informationen.



4. Abschluß

Theoretisch wären wir jetzt schon fertig, praktisch jedoch möchte ich Euch noch daran erinnern, das wir in meinem vorherigen Tutorial Mehrsprachige Programme entwickeln ja gelernt haben, wie sprachabhängige Texte definiert werden, also wie der Text innerhalb des Dialoges je nach eingestellter Gerätesprache auch dem entsprechend angezeigt wird.
Da Ihr das an dieser Stelle ja schon können solltet, werde ich da nicht noch mal ins Detail gehen. Kleiner Tipp jedoch: Ihr müsst die Texte für Titel, Nachricht und den Schließen-Button in den Localizable.strings Dateien einfügen und dann mit NSLocalizedString die Funktion infoViewAction anpassen. 

Falls Ihr es jedoch nicht mehr hinbekommt, könnt Ihr auch das Xcode-Projekt zu diesem Tutorial hier runterladen, dort sind die Texte sprachabhänig implementiert:  InfoButton_AlertDialog.zip






Kommentare (10)
Tolle Tutorials
1 MONDAY, 19 JANUARY 2009 22:42
???
Hab grad alle drei Hello World Tutorials durchgearbeitet!
Gefallen mir sehr gut! Istn super Einstieg!
Vielen Dank dafür :)
Sehr schön
2 THURSDAY, 29 JANUARY 2009 23:56
???
hat mir auch sehr gefallen!!! Weiter so! ;)
Super klasse...... ;-)
3 SUNDAY, 22 FEBRUARY 2009 22:41
???
echt super geil deine Tutorials.....
Vielen Dank weiter sooooooo

War echt super hilfreich danke.....
Danke !!
4 TUESDAY, 17 MARCH 2009 14:38
???
So muß es sein !!
Nachdem ich mich mit so manchen anderen Beispielen rumgeärgert habe, gabs hier ein Erfolgserlebnis. Nicht nur weils klappt, sondern weil mann es auch versteht !
Super Einstieg!!!!
5 TUESDAY, 14 APRIL 2009 23:42
???
Hallo,

Habe ebenfalls gerade alle 3 Tutorials durchgearbeitet und bin extrem begeistert wie gut man doch durch solche Tutorials an das Thema "iPhone Entwicklung" rangeführt werden kann.

Vorsichtige Frage: Wann gibt es mehr davon? :-)

Viele Grüße aus Berlin,
Cyrill
VIELEN DANK!
6 WEDNESDAY, 15 APRIL 2009 20:21
???
Hi wollt mich erstmal für die Arbeit bedanken und die tollen Toturials die SEHR GUT erklärt sind !

vll gibts ja bald noch nen hallo world 4 mit nem Sound der ertönt sobald man auf den Button klickt! nur so ne Idee ;)

LG MC und Weiter so

ps. giebt es eigentlich ein gutes Deutsches Buch über die verschiedenen Sprachen XCODE; VC usw?
Kann mich nur anschliessen...
7 WEDNESDAY, 13 Mai 2009 21:21
???
Ich bedanke mich für diese hervorragenden Tutorials. Sie sind übersichtlich und sehr ausführlich beschrieben. Man kommt wunderbar mit und kann jeden einzelnen Schritt nachvollziehen.

Ich hoffe diese Serie wird fortgesetzt!

Mfg

Stephan
Danke
8 SATURDAY, 04 JULY 2009 01:23
???
Auch von mir vielen Dank für diese erste Einführung.
Durch den ersten Erfolg auf den Geschmack gebracht, freue ich mich auf das bestellte Buch, um dann richtig durchzustarten. :)
Viele Grüße
Roland
Klasse
9 WEDNESDAY, 30 DECEMBER 2009 00:57
???
Nur... Warum \r\n?
Basiert das iPhone OS nicht auf einem Unix Kernel?
Da braucht man doch kein Carrage Return oder?

Naja, danke fürs klasse Tut :)
(Auch wenn ich nicht ganz verstehe warum es beim UIButton keine alloc gibt)
GPS
10 TUESDAY, 05 JANUARY 2010 03:36
???
Sehr gute Tutorials,

hat sehr geholfen! Würde mich über ein Tutorial freuen, wo man sieht, wie man GPS integriert. Und Webseiten aufruft ( im Hintergrund also nur Daten dahin schicken. ) Dazu die Frage ob das Fenster, wo man eine Bestätigung bekommt, ob GPS verwendet werden darf, System gebunden ist? Weil ich es sehr wichtig finde, dass diese Erlaubnis kommt, ohne dass man es selber programmieren muss!!!

Danke schonmal!!!!

Ihren Kommentar hinzufügen

Ihr Name:
Ihre Webseite:
Betreff:
Kommentar:
  Bild, welches den Sicherheitscode enthält
Sicherheitscode:
LAST_UPDATED2