Bobby: Objective-C

Moin

Kennt sich hier jemand mit Objective C aus?

ich habe eine h-DAtei mit XIB und m. In der m Datei soll eine Funktion aus einer anderen importierten Datei ausgeführt werden. DAs klappt auch alles wunderbar. NUR: der Code der importierten Datei soll erst nach dem Fertigladen der xib gestartet werden.

Also, wie kann ich die Funktion erst nach vollständigem Laden der XIB starten?

Gruß Bobby

--
-> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
### Henry L. Mencken ###
-> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
## Viktor Frankl ###
ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)
  1. Servus,

    Kennt sich hier jemand mit Objective C aus?

    Ein wenig, obwohl ich gerade keinen Mac zur Hand habe.

    ich habe eine h-DAtei mit XIB und m.

    Kurze Verständnisfrage: In der .h und .m ist der Code für das Objekt in der XIB, also irgend ein Controller?

    In der m Datei soll eine Funktion aus einer anderen importierten Datei ausgeführt werden. DAs klappt auch alles wunderbar. NUR: der Code der importierten Datei soll erst nach dem Fertigladen der xib gestartet werden.

    Bei der Verwendung von NIBs und XIBs kennt Objective-C/der Interface Builder die Methode awakeFromNib, die direkt nach dem Laden aus der NIB/XIB aufgerufen wird.

    Viele Grüße,
    Robert

    1. Moin

      Irgendwo hab ich ein Verständnisproblem.

      ich habe eine update.h

        
      @interface update : UIViewcontroller  
      .  
      .  
      .  
      
      

      dazu die m-Datei

        
      # import "update.h"  
        
      @interface update()  
      @end  
        
      @implementation update  
      .  
      .  
      .  
        
      
      

      Nun habe ich eine weitere Datei:
      angelegt, die eine Methode enthält mit dem Namen updatesdatas

      Innerhalb der - (void) viewDidLoad-Methode geht der Aufruf wunderbar. Aber eben schon vor Laden der XIB

      [dataupdate *du=[[dataupdate alloc] init];
      [du updatedatas];

      Wie bekomme ich das nun hin, das erst die XIB geladen wird und dann erst die Funktion ausgeführt wird? Was übersehe ich, bzw habe ich noch nicht verstanden?

      Ich weiß, alles noch Low-Level, aber ich versuche mich gerade hinein zu denken.

      Gruß Bobby

      --
      -> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
      ### Henry L. Mencken ###
      -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
      ## Viktor Frankl ###
      ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)
      1. Moin

        awakeFromNIB wird nun angesprochen. Dennoch wird zuerst die Funktion ausgeführt, bevor der View geladen wird. FURCHTBAR das ganz... Und ich weiß nun echt nicht mehr weiter...

        Gruß Bobby

        --
        -> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
        ### Henry L. Mencken ###
        -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
        ## Viktor Frankl ###
        ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)
        1. Servus,

          awakeFromNIB wird nun angesprochen. Dennoch wird zuerst die Funktion ausgeführt, bevor der View geladen wird.

          Welche Funktion wird zuerst ausgeführt? Laut Spezifikation sollte zumindest awakeFromNib erst aufgerufen werden, wenn die NIB-/XIB geladen ist.

          Viele Grüße,
          Robert

          1. Moin

            Welche Funktion wird zuerst ausgeführt?

            Ich habe den aufruf der updatedatas Methode Indie awakeFromNib reingetan... Trotzdem wird diese noch vor dem Laden der xib ausgeführt... Irgendwas stimmt da nicht... Aber was verdammt????

            Laut Spezifikation sollte zumindest awakeFromNib erst aufgerufen werden, wenn die NIB-/XIB geladen ist.

            Ja,laut Spezifikationen.... Nur bei mir nich :/

            Woran könntes denn noch liegen? :(

            Gruß Bobby

            --
            -> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
            ### Henry L. Mencken ###
            -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
            ## Viktor Frankl ###
            ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)
            1. Servus,

              Ich habe den aufruf der updatedatas Methode Indie awakeFromNib reingetan... Trotzdem wird diese noch vor dem Laden der xib ausgeführt... Irgendwas stimmt da nicht... Aber was verdammt????

              Gehört denn awakeFromNib zu dem Objekt, welches in der XIB als »File's Owner« definiert ist? Vielleicht liegt es daran. Ansonsten bin ich leider auch überfragt.

              Viele Grüße,
              Robert

              1. Moin

                Gehört denn awakeFromNib zu dem Objekt, welches in der XIB als »File's Owner« definiert ist? Vielleicht liegt es daran. Ansonsten bin ich leider auch überfragt.

                Ja, gehört zu dem Objekt. NAja... muss ich weiter probieren. ABer danke für deine Hilfe.

                Gruß Bobby

                --
                -> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
                ### Henry L. Mencken ###
                -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
                ## Viktor Frankl ###
                ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)
              2. Moin

                Gehört denn awakeFromNib zu dem Objekt, welches in der XIB als »File's Owner« definiert ist? Vielleicht liegt es daran. Ansonsten bin ich leider auch überfragt.

                Hab grad geguckt... in der update.xib hab ich im Files Owner die Klasse update als Custom Class definiert. In der update.m liegt dann die Methode awakeFromNib.

                Also solltes ordentlich definiert sein. Oder?

                Gruß Bobby

                --
                -> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
                ### Henry L. Mencken ###
                -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
                ## Viktor Frankl ###
                ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)
                1. Servus,

                  Hab grad geguckt... in der update.xib hab ich im Files Owner die Klasse update als Custom Class definiert. In der update.m liegt dann die Methode awakeFromNib.

                  Ich habe hier nur 10.5 mit Xcode 3.1.4. Dort gibt es im Interface Builder »Class Identity« und unter »Class« ist die zugehörige Klasse definiert. In der Implementierung heißt es dann,

                  - (IBAction)awakeFromNib  
                  {  
                      // Code, der eigentlich nach dem Laden der Nib/Xib ausgeführt wird  
                      // …  
                  }
                  

                  Ich habe das an Hand einer „document-based application“ ausprobiert, sprich sowohl im »Application Controller« als auch im »Document Controller«: Die awakeFromNib von ersterem wird vermutlich nach dem Laden der MainMenu.xib ausgeführt, d.h. in der Methode kann ich auf alle Outlets (GUI-Objekte) zugreifen. Beim Document Controller sieht es genau so aus. Hier gibt es noch die Methode windowControllerDidLoadNib, die nach awakeFromNib ausgeführt wird.

                  Was ist denn dein genaues Problem? Kannst du nicht auf bestimmte Outlets zugreifen?

                  Viele Grüße,
                  Robert

                  1. Moin

                    So, habs gelöst... ViewDidAppear() macht nun genau was ich wollte.. Diese Funktion wird aufgerufen wenn der view erscheint (im übertragenen Sinne)... Und ich freu mich... Vielen Dank trotzdem...

                    Gruß Bobby

                    --
                    -> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
                    ### Henry L. Mencken ###
                    -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
                    ## Viktor Frankl ###
                    ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)