• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Hilfe zu verständniss einer zeile code

redrat666

Golden Delicious
Registriert
12.06.09
Beiträge
7
Hallo zusammen,
habe mich heute hier neu angemeldet, nachdem ich schon ein paar hilfreiche Einsteiger-Tips zum iPhone Entwickeln hier gefunden habe.
Da ich neu bin hoffe ich, dass ich im richtigen Unterforum, für meine Frage, gelandet bin.
(ich bitte um Rücksicht falls nicht :) )

Nach mehreren Tutorials im Internet bin ich gerade am lesen des Buches (Seite80) "Beginning iPhone Development - Exploring the iPhone SDK" von Dave Mark u. Jeff LaMarche.
Bisher hab ich das alles verstanden und habe ein gefühltes gutes erlerntes Wissen :D
Jetzt habe ich ein kleines Verständnissproblem zu folgender Zeile Code und hoffe mir könnte die jemand erklären.

Code:
- (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex
{
    ...
}

kurze erklärung zum ganzen code: ein action sheet ruft eine alert box auf.

bisher sind mir nur IBActions vorgekommen wie:
Code:
- (IBAction)doSomething:(id)sender
{
    ...
}

womit ich kein verständiss problem habe.

Vielen Dank fürs lesen
 

MacApple

Schöner von Bath
Registriert
05.01.04
Beiträge
3.652
Jetzt habe ich ein kleines Verständnissproblem zu folgender Zeile Code und hoffe mir könnte die jemand erklären.

Code:
- (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex
{
    ...
}
Ja, und was ist jetzt das Verständnisproblem? Das ist eine Methode mit zwei Parametern. (Objective-C)

MacApple
 

LittlePixel

Strauwalds neue Goldparmäne
Registriert
09.07.08
Beiträge
641
Ohne eine Ahnung von dem Ei-Fon zu haben.
Aber ich würde sagen, dass ist eine Delegate-Methode. Was sagt die Doku dazu?

"redrat666", Delegate Methoden sind Methoden, die aufgerufen werden wenn ein bestimmtes Ereignis statt fand / findet / finden wird.
Sehr trivial ausgedrückt bitte genau nachlesen ;)

Viele Grüße
 

Jamsven

London Pepping
Registriert
21.11.07
Beiträge
2.046
Ohne eine Ahnung von dem Ei-Fon zu haben.
Aber ich würde sagen, dass ist eine Delegate-Methode. Was sagt die Doku dazu?

"redrat666", Delegate Methoden sind Methoden, die aufgerufen werden wenn ein bestimmtes Ereignis statt fand / findet / finden wird.
Sehr trivial ausgedrückt bitte genau nachlesen ;)

Viele Grüße

Du musst natürlich dem ActionSheet mitteilen, das ein deligierendes Objekt gibt.
Das macht man normalerweise im IB, aber es gibt auch Methoden dazu.
 

redrat666

Golden Delicious
Registriert
12.06.09
Beiträge
7
Code:
- (IBAction)doSomething:(id)sender
{
UIActionSheet *actionSheet =[[UIActionSheet alloc] initWithTitle:@"Are you sure?" delegate:self cancelButtonTitle:@"No Way!" destructiveButtonTitle:@"Yes, I`m Sure!" otherButtonTitles:nil];
[actionSheet showInView:self.view];
[actionSheet release];
}

- (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex
{
if(!(buttonIndex == [actionSheet cancelButtonIndex]))
{
NSString *msg = nil;
if (nameField.text.length > 0) msg = [[NSString alloc] initWithFormat:@"You are the best: %@ !!",nameField.text];
else msg = @"Alles fein!";
UIAlertView *alert = [[UIAlertView alloc]  initWithTitle:@"Something was done"  message:msg   delegate:self   cancelButtonTitle:@"Peng!"   otherButtonTitles:nil];
[alert show];
[alert release];
[msg release];
}
}

Ich hoffe ich verwende die richtigen worte...

Die doSomething Methode wird ja vom iPhone Interface aus aufgerufen über eine IBAction.
Nach aufruf wird ein actionSheet erstellt und aufgerufen.

jetzt gibt ja einen "OK" und eine "Cancle" Button der sich jeweils selbst übergeben wird?? (delegate self)

heisst deswegen die void methode auch actonSheet? - (void)actionSheetUIActionSheet *)actionSheet ...

Und vorallem frage ich mich wo das ...didDismissWithButtonIndex:(NSInteger)buttonIndex greift.
Wird die Methode egal über welchen Button aufgerufen und falls "OK" greift das IF, wenn nicht laufen wir ins leere.
 
Zuletzt bearbeitet:

MacApple

Schöner von Bath
Registriert
05.01.04
Beiträge
3.652
jetzt gibt ja einen "OK" und eine "Cancle" Button der sich jeweils selbst übergeben wird?? (delegate self)
Hast Du mal die Dokumentation zu den Methoden gelesen?

heisst deswegen die void methode auch actonSheet? - (void)actionSheetUIActionSheet *)actionSheet ...
Es ist üblich, Methoden einen aussagekräftigen Namen zu geben.

und vorallem frage ich mich wo das ...didDismissWithButtonIndexNSInteger)buttonInde x greift.
Die Methode heißt actionSheet:didDismissWithButtonIndex:. Was meinst Du jetzt mit "greifen"?

wird die methode egal über welchen button aufgerufen und falls "OK" greift das IF wenn nicht laufen wir ins leere.
Ja, die Methode wird immer aufgerufen, wenn das Sheet "dismissed" wurde. Der Code in der Methode wertet aber nicht aus, welcher Button angeklickt wurde.

Mal grundsätzlich. Du hast im Eingangspost geschrieben, Du hättest bis jetzt alles verstanden. Ich will Dir wirklich nichts böses, aber ich habe nicht den Eindruck, als hättest Du schon einiges verstanden. Ich habe sogar den Eindruck, dass Dir noch nicht einmal die Syntax von Objective-C so richtig klar ist.

MacApple
 

redrat666

Golden Delicious
Registriert
12.06.09
Beiträge
7
Hi,
als erstes wollte ich anmerken, dass ich erst grob 2 Woche mit dem Thema beschäftige und deswegen mir die Syntax nicht locker von den Fingern geht und ich viele Methoden nicht kenne. Ausserdem ist das die erste Programmiersprache mit der ich mich tiefgehender beschäftige.
Deswegen ist es für mich (noch) schwer alles zu sofort zu erkennen und mich mit den richtigen worten auszudrücken.
Ich bin aber durchaus gewillt zu lernen, das sollte das englische Buch und meine Fragen eigentlich zeigen.

Es ist klar dass für Erfahrene Anfängerfragen "billig" sind, aber jeder hat mal angefangen.
...ich sitze erst seid 2 Wochen vor dem OSX (sonst linux und Windows) und dann noch das neue SDK und dann noch objectiveC / cocoa...

Eigentlich scripte ich PHP SQL ... und mein Chef will nun das wir auf den iPhone hype mitziehen.
Ich bin nicht einer der denkt "iPhone boaar geil das lerne ich kurz"
Ich habe nichtmal ein iPhone/iPod touch.

-------

actionSheet:didDismissWithButtonIndex
wie ich nun gesehen habe ist eine Methode die von Apple bereit gestellt wird, das hab ich mir nun auch durchgelesen.

Die Namen die ich aus dem Buch habe will ich vorerst mal noch nicht abändern, auch wenn sie anders aussagekräftiger wären. Was dann genau eine eigene Methode ist und eine bereitgestellte Methode von Apple ist mein grösstes Anfängerproblem um dann den Code genau nach zu vollziehen und zu verstehen.
Am meisten hat mich dann die Methode mit 2 Parameter verwirrt und wie diese übergeben werden bzw aufgerufen wird.

Dein gefühl hat dich also nicht getäuscht ich habe noch Probleme.
 

redrat666

Golden Delicious
Registriert
12.06.09
Beiträge
7
@Pii danke, das ist sehr hilfreich.

Nichts desto trotz sollte ich so ein teil mal in die hand nehmen :)
 

MacApple

Schöner von Bath
Registriert
05.01.04
Beiträge
3.652
Es ist klar dass für Erfahrene Anfängerfragen "billig" sind, aber jeder hat mal angefangen.
Wie gesagt, ich habe es nicht böse gemeint. Ich wollte Dir nur sagen, dass Du Dich vielleicht erst einmal mit den Grundlagen beschäftigst. Wenn Englisch für Dich kein Problem ist, kannst Du Dir auch mal den iTunes U Podcast „iPhone Application Programming” antun.

MacApple
 

Amin Negm-Awad

Süsser Pfaffenapfel
Registriert
01.03.07
Beiträge
665
Hi,
[…]
actionSheet:didDismissWithButtonIndex
wie ich nun gesehen habe ist eine Methode die von Apple bereit gestellt wird, das hab ich mir nun auch durchgelesen.
Nicht durch Apple, sondern durch die Klasse. Man hat halt Objekte wie das Sheet, die zu 99 % das tun, was du möchtest (erscheinen, verschwinden, sich zeichnen usw.). 1 % musst du anpassen. Das kann man mit einer Subklasse machen, oder indem das Objekt selbst Methoden aufruft, die Auskunft darüber erteilen, was geschehen soll. Das nennt man Delegating und hat Vorteile. Insgesamt solltest du das dringend verstehen.

Negm-Awad, Objective-C und Cocoa I, 2. Auflage 356 ff.

Du findest übrigens die Delegatemethoden am Ende des Dokumentation zu einer Klasse.

Hi,
[…]Am meisten hat mich dann die Methode mit 2 Parameter verwirrt und wie diese übergeben werden bzw aufgerufen wird.
Wenn du noch kein Objective-C kannst und aber ein Buch liest, welches Objective-C voraussetzt, bekommst du Probleme.