Frage

Ich baue eine Anwendung auf Basis der Vorlage Dienstprogramm von Xcode, zu denen ich noch ein paar Ansichten hinzugefügt haben. Meine Anwendungsstruktur würde wie folgt aussehen:

  • Mainview (das App-Menü)

    • Flip-Seitenansicht (ein Rechner)

    • UINavigationController

    • Einstellungen anzuzeigen

      • viewDidLoad: UITabBarController

                - Tab1 view (options)
                - Tab2 view (information text)
        

kann ich richtig von meinem Mainview meiner Flip-Seitenansicht navigieren, die Ansicht der Navigation Controller auch die Wurzel ist. Aus meiner Flip-Seitenansicht, schiebe ich eine zweite Ansicht meiner Navigation Controller (Ansicht Einstellungen), die, sobald sie Lasten mit zwei Registerkarten eine UITabBarController, um zu zeigen, konfiguriert ist (mit viewDidLoad).

Wenn ich die UITabBarController entfernen, kann ich ohne Probleme meine Flip-Seitenansicht zurückkehren mit „popViewController“ von meiner Einstellungen anzuzeigen. Das Problem kommt, wenn ich die UITabBarController in viewDidLoad lade in meiner Ansicht Einstellungen ... die Tabs funktioniert perfekt, aber ich bin nicht mehr in der Lage meiner Flip-Seitenansicht (Stammansicht des Navigation Controller) zurückzukehren.

Ich kann zurückkehren, wenn ich die Navigationsleiste des Navigation Controller verwenden, aber ich mag meine eigenen Tasten konfigurieren und die Navigationsleiste versteckt hat.

Bisher habe ich die folgenden Methoden versucht:

  • [self.navigationController popViewControllerAnimated: YES];

  • [self.navigationController popToRootViewControllerAnimated: YES];

  • [self.navigationController popToViewController: FlipSideViewController animiert: YES];

Aber sie scheinen nicht zu arbeiten. Die ersten beiden gerade nichts zu tun (der Bildschirm bleibt, wie es war), und die dritte nicht die „FlipsideViewController“ erkennen (vielleicht weil es ein Delegierter des Mainviewcontroller?).

Gibt es eine Möglichkeit zu überprüfen, was genau ist die „Zurück“ -Taste der Navigationsleiste zu tun, wenn ich es aktivieren?

Soll ich mit Delegierten werden?

Kann ich eine popViewController Methode in meinen Einstellungen aus einer der zwei Tab Ansichten betrachten nennen?

Das ist meine Flip-Seitenansicht:

- (IBAction)showSettingsView {
    SettingsViewController *controller = [[SettingsViewController alloc] initWithNibName:@"SettingsView" bundle:nil];
    controller.title = @"Settings";
    [self.navigationController pushViewController:controller animated:YES];
    [controller release];
}

Das ist meine Ansicht Einstellungen:

- (void)viewDidLoad {
    [super viewDidLoad];

    tabBarController = [[UITabBarController alloc] init];

    Tab1ViewController* vc1 = [[Tab1ViewController alloc] init];
    Tab2ViewController* vc2 = [[Tab2ViewController alloc] init];

    NSArray* controllers = [NSArray arrayWithObjects:vc1, vc2, nil];
    tabBarController.viewControllers = controllers;

    [self.view addSubview:tabBarController.view];
}

Und das Verfahren in einem der Tab Blick zurück:

- (IBAction)backFromTab1View {
    [self.navigationController popToViewController:FlipSideViewController animated:YES];
}

Vielen Dank und sorry, wenn die Frage ist zu einfach!

War es hilfreich?

Lösung

Ich löste das Problem tatsächlich meine eigene UINavigationBar zu schaffen, in der Ansicht Einstellungen und Verwendung:

[self.view insertSubview:tabBarController.view belowSubview:myNavigationBar];

Dass fügt der Rest der Ansicht unterhalb der Navigationsleiste und ich kann es immer noch eine Schaltfläche zu konfigurieren, benutzen, die die Ansicht und die Rückkehr zum vorherigen Bildschirm erscheint.

Es dauerte eine Weile, um die Unterschiede zwischen „addSubview“ und „inserSubview + belowSubview“ zu realisieren. Traurig über das!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top