TabbarController Verhalten bei NavigationController ändern

  • TabbarController Verhalten bei NavigationController ändern

    Hallo.

    Ich habe einen Tabbarcontroller. Auf einem Tab "liegt" ein NavigationController. Auf dem NavigationController liegen Views. Standard soweit.
    Nun hab ich folgendes Szenario:

    Eine View auf dem NavigationController ist geladen und wird angezeigt. Nun tappe ich einmal auf das Tabbaritem und der NavigationController "poppt" zum RootView. Soweit ok, nur möchte ich dort keine Animation, wenn er zurück zum RootView geht.

    Warum ich die Animation nicht will:
    Der RootView läd Daten von nem Webservice. In der Zeit in der die Daten geladen werden, wird ein Ladescreen auf den NavigationController "gepusht".
    Dieser wird jedoch seltsamerweise nur angezeigt, wenn die Animation nicht ausgeführt wird. Warum das so ist habe ich aber bisher nicht rausbekommen; meine Vermutung ist, dass die Animation den Ladescreen sozusagen "überlagert". Die Views auf dem NavigationController werden auch per WebService gefüttert und da hab ich auch das Problem mit den Animationen, weshalb ich die nun überall rausgenommen habe.

    Meine Frage also: wie schalte ich die Animation bei tap auf das uitabbaritem aus; oder: warum überlagern sich die animationen/views und wie kann ich das verhindern (Timer?).

    Liebe Grüße,

    - Olli
  • RE: TabbarController Verhalten bei NavigationController ändern

    Original von osigge
    Eine View auf dem NavigationController ist geladen und wird angezeigt. Nun tappe ich einmal auf das Tabbaritem und der NavigationController "poppt" zum RootView. Soweit ok, nur möchte ich dort keine Animation, wenn er zurück zum RootView geht.

    Mit ist neu, dass ein TabBarController einen NaviagtionController dazu veranlasst auf den RootView zu wechseln, wenn das TabBarItem zum NavigationController angetippt wird.

    Bist Du sicher, dass Du nicht ein popToRootViewControllerAnimated: dafür implementiert hast?
  • RE: TabbarController Verhalten bei NavigationController ändern

    Hallo .

    Ich hatte mit dem TabbarController Xcode Template begonnen und soweit (außer der Anzahl der Items, der Icons und der Beschriftung der Items) nichts an der Tabbar verändert.

    Ich schaue mal nach, ob das Template das irgendwo reingemacht hat, aber wenn dann hätte ich gedacht, dass es im Delegate drin sei, was es aber nicht ist. Danke für den Hinweis.

    EDIT: Also im Code ist nichts dergleichen. Das muss also die Tabbar von Haus aus machen (kenne das "Merkmal" auch von anderen apps wie beispielsweise der iPod app).

    Ich hätte gedacht, es gibt ne delegate methode für das tappen eines items; in der Doku konnte ich nichts dergleichen entdecken. Der Delegate für den Controller umfasst nur Methoden für die "mehr" Funktion der Tabbar.
    Gibt es eine Möglichkeit das Verhalten zu überschreiben?
  • Habe immer noch keine Lösung für das Problem gefunden. Hat denn noch niemand dasselbe Problem gehabt?

    Alternativ wäre eine Lösung für folgendes Problem:

    Wenn ich einen ViewController auf den NavigationController Stack pushe und dies mit Animation mache, um diesen anschließend wieder mit Animation zu "poppen" (Stichwort Ladescreen), wird der ViewController nicht "gepoppt". Mache ich das ganze ohne Animation klappts wunderbar.
    Gibt es dafür eine Lösung?
  • RE: TabbarController Verhalten bei NavigationController ändern

    Original von osigge
    Ich hätte gedacht, es gibt ne delegate methode für das tappen eines items; in der Doku konnte ich nichts dergleichen entdecken. Der Delegate für den Controller umfasst nur Methoden für die "mehr" Funktion der Tabbar.
    Gibt es eine Möglichkeit das Verhalten zu überschreiben?

    Klar gibt es eine Delegate-Methode für das Tappen eines Items. tabBarController:didSelectViewController:
    In iPhone OS v3.0 and later, the tab bar controller calls this method regardless of whether the selected view controller changed. In addition, it is called only in response to user taps in the tab bar and is not called when your code changes the tab bar contents programmatically.

    Allerdings kannst du das Verhalten damit offensichtlich nicht überschreiben.

    Mir gefällt ehrlich gesagt dein ganzer Ansatz nicht. Die Animationen gehören zur User Experience dazu und deswegen sollte man sie normalerweise nicht abschalten. Das ist doch eines der Features, die das iPhone-UI ausmachen. Ein Ladescreen ist auch kein Teil der Navigationshierarchie und sollte deswegen nicht auf den NavController gepusht werden. Wie wäre es denn, beim Laden einfach eine View anzuzeigen, die die Hauptview des aktuellen Controller überlagert? Ist aus meiner Sicht viel logischer.