Daten über UINavigationController weiterreichen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Daten über UINavigationController weiterreichen

    Hallo Entwickler,

    ich möchte Variablen von einem ViewController über einen UINavigationController zu einem anderen ViewController weiterreichen.
    Da habe ich mir eine eigene Subklasse von UINavigationController geschrieben. Diesem Controller werden die Variablen übergeben.
    In welcher Methode sollte ich die Variablen an den rootViewController weitergeben lassen?
  • Aber zwei ViewController sind doch zwei Controller.
    Warum sollten die sich nichts übergeben dürfen?

    Situation auf dem iPad:

    ViewController
    (ohne NavigationController)
    |
    Popover Segue
    (an meinen NavigationController)
    |
    2. ViewController
    (rootVC vom NavigationController, mit NavigationBar)

    Und ich will, das der MainViewController dem ViewController im Popover Variablen übergeben kann.
    Da Problem ist, dass zwischen ihnen ein NavigationController ist.
  • Mal ganz im Ernst. Mit der Einstellung willst du ein Stipendium von Apple ? Sorry aber wenn du nichts lernen willst dann schenk Dir das doch auch einfach und lass das Leute machen die bereit sind auch mal etwas Zeit zu investieren um es richtig zu machen.

    Habe ich absolut kein Verständnis für

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Ich hab mir das MVC durchgelesen, habe meine App verändert und habe wieder etwas gelernt.
    Ich habe mein Lösung sogar gezeigt.
    Da die beiden ViewController hängen jetzt direkt per Segue zusammen und so kann ich per prepareForSegue... Variablen übergeben.

    Und nur so zur Info, ich investiere viel Zeit.
    Ich habe jetzt Praktikum und habe in dieser und der letzten Woche täglich 8h an meinen Apps geschrieben und sogar meine vierte App in den AppStore geschickt.
  • Jetzt gibt es trotzdem noch ein Problem.
    Da der zweite ViewController nicht gepusht, sondern gepopovert wird, hängt er nicht mit am NavigationController.

    Das Prinzip: ViewController -> NavigationController -> ViewController als Popover
    Wie kann man einen NavigationController zwischen ViewController hängen und trotzdem noch Variablen übergeben?
  • MVC

    Mach Dir eine Controller Klasse die unabhängig ist von Deinen ganzen ViewControllern. Dann kann sich jeder ViewController diese Klasse instanzieren und bekommt die Daten die er braucht.

    Aber du hast das ja alles schon gemacht hast du oben erzählt

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Wenn er einfach programmier ist ja. Wenn Du es gut machst dann kannst du so viele Instanzen haben wie Du willst und alle arbeiten unabhängig mit den gleichen Daten. Dazu müssen diese aber natürlich die Daten observen, so das wenn eine Instanz etwas an den Daten ändert, die anderen Instanzen eine Notifikation bekommen und entsprechend agieren können.

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Bin grad dabei das mit den Klassenmethoden zu verstehen.

    Also ist es egal, ob man:

    Quellcode

    1. Human *Paul = [[Human alloc] initWithName:@"Paul"];

    oder

    Quellcode

    1. Human *Paul = [Human paul];
    2. + (Human *)paul
    3. {
    4. return [[Human alloc] initWithName:@"Paul"];
    5. }

    macht?
  • in dem Fall ja aber nur weil die zweite Methode falsch implementiert ist. Die zweite Methode ist ein convenience allocator und darf kein owenership auf das object zurück geben. Also muss es richtig heissen

    Quellcode

    1. Human *Paul = [Human paul];
    2. + (Human *)paul
    3. {
    4. return [[[Human alloc] initWithName:@"Paul"] autorelease];
    5. }


    und das wäre es nicht mehr das gleiche wie das erste Beispiel. Weil im ersten Beispiel wirst Du owner von Human und must es selber releasen (vorausgesetzt du hast kein ARC an). Im zweiten Fall bist du nicht owner und brauchst auch nichts releasen.

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Thallius schrieb:

    in dem Fall ja aber nur weil die zweite Methode falsch implementiert ist. Die zweite Methode ist ein convenience allocator und darf kein owenership auf das object zurück geben.

    Remember ARC. ;)

    Ja, Klassen sind Klassenobjekte und Objekte sind Instanzobjekte.
    Was bei objektorientierter Programmierung auch total sinnvoll ist.
    Ich meine, was sollten Klassen denn sonst sein, wenn keine Objekte?

    Und nein, Klassen haben keine Variablen.
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P
  • Vyax schrieb:

    Hallo Entwickler,

    ich möchte Variablen von einem ViewController über einen UINavigationController zu einem anderen ViewController weiterreichen.
    Da habe ich mir eine eigene Subklasse von UINavigationController geschrieben. Diesem Controller werden die Variablen übergeben.
    In welcher Methode sollte ich die Variablen an den rootViewController weitergeben lassen?

    Warum so kompliziert? Warum hälst du dich nicht einfach an das MVC Konzept? Im Model liegen deine Daten, die du weiterreichen möchtest. Und die verschiedenen ViewController reichen sich nur den Zeiger auf dein instanziertes Model-Objekt weiter.