1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Unsere jährliche Weihnachts-Banner-Aktion hat begonnen! Wir freuen uns auf viele, viele kreative Vorschläge.
    Mehr dazu könnt Ihr hier nachlesen: Weihnachtsbanner 2016

    Information ausblenden

Hilfe zu verständniss einer zeile code

Dieses Thema im Forum "iOS-Developer" wurde erstellt von redrat666, 12.06.09.

  1. redrat666

    redrat666 Golden Delicious

    Dabei seit:
    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
     
  2. MacApple

    MacApple Lord Grosvenor

    Dabei seit:
    05.01.04
    Beiträge:
    3.469
    Ja, und was ist jetzt das Verständnisproblem? Das ist eine Methode mit zwei Parametern. (Objective-C)

    MacApple
     
  3. LittlePixel

    LittlePixel Strauwalds neue Goldparmäne

    Dabei seit:
    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
     
  4. Jamsven

    Jamsven London Pepping

    Dabei seit:
    21.11.07
    Beiträge:
    2.046
    Du musst natürlich dem ActionSheet mitteilen, das ein deligierendes Objekt gibt.
    Das macht man normalerweise im IB, aber es gibt auch Methoden dazu.
     
  5. redrat666

    redrat666 Golden Delicious

    Dabei seit:
    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.
     
    #5 redrat666, 15.06.09
    Zuletzt bearbeitet: 15.06.09
  6. redrat666

    redrat666 Golden Delicious

    Dabei seit:
    12.06.09
    Beiträge:
    7
    kann man nicht löschen?
     
  7. MacApple

    MacApple Lord Grosvenor

    Dabei seit:
    05.01.04
    Beiträge:
    3.469
    Hast Du mal die Dokumentation zu den Methoden gelesen?

    Es ist üblich, Methoden einen aussagekräftigen Namen zu geben.

    Die Methode heißt actionSheet:didDismissWithButtonIndex:. Was meinst Du jetzt mit "greifen"?

    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
     
  8. redrat666

    redrat666 Golden Delicious

    Dabei seit:
    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.
     
  9. Pii

    Pii Rheinischer Krummstiel

    Dabei seit:
    25.06.07
    Beiträge:
    383
    below gefällt das.
  10. redrat666

    redrat666 Golden Delicious

    Dabei seit:
    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 :)
     
  11. MacApple

    MacApple Lord Grosvenor

    Dabei seit:
    05.01.04
    Beiträge:
    3.469
    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
     
  12. below

    below Kalterer Böhmer

    Dabei seit:
    08.10.06
    Beiträge:
    2.865
    Bitte, freut mich :D

    Alex
     
  13. Amin Negm-Awad

    Amin Negm-Awad Süsser Pfaffenapfel

    Dabei seit:
    01.03.07
    Beiträge:
    665
    … ein delegiertes Objekt. Das delegierende Objekt ist ja das Sheet.
     
  14. Amin Negm-Awad

    Amin Negm-Awad Süsser Pfaffenapfel

    Dabei seit:
    01.03.07
    Beiträge:
    665
    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.

    Wenn du noch kein Objective-C kannst und aber ein Buch liest, welches Objective-C voraussetzt, bekommst du Probleme.
     

Diese Seite empfehlen