20

Ich versuche, die folgende Einrichtung in Storyboard zu bekommen.Storyboard Navigations-Controller und Tab-Leiste Controller

Storyboard

Wo ich eine Tabellenansicht am Anfang haben, und wenn ich tippen Sie auf eine Zelle, um sie muss auf die Tab-Leiste Controller, um den Übergang, die funktioniert. Aber jetzt möchte ich einen Titel und eine zusätzliche Navigationsleiste in den 2 rechten Reglern.

Aber ich kann nicht scheinen, um einen Knopf dorthin zu ziehen, oder wenn ich den Titel einstelle, wird nichts angezeigt. Wie kann ich dieses Setup im Storyboard erreichen?

edit:

Aktualisiert Frage, basierend auf Antwort unten.

New setup

Wenn ich diese neue Einrichtung (also mit einem zusätzlichen Navigationscontroller dazwischen) ich den Titel im Storyboard einstellen kann, aber wenn die App ausgeführt wird, wird der hinzugefügte Titel nicht gezeigt.

bearbeiten: Ich habe uploaded ein xcode-Projekt mit genau diesem Setup. Vielleicht kann es nützlich sein.

+0

Ist Ihr Problem gelöst ich gt die ähnliche Frage –

Antwort

24

Für die UINavigationBar Titel zu ändern (ohne dass 2 weitere UINavigationController erstellen) Sie nur

[self.parentViewController.navigationItem setTitle:@"Title"]; 

verwenden können, und zum Hinzufügen der rechte Taste für jeden UIViewController

self.parentViewController.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(myRightButton)]; 

auf viewDidLoad Methode referenziert von Ihrer UITabBarController.

Wenn Sie mit „Navigationsstrukturen“ in Ihrem UIViewController von TabItems arbeiten wollen, so können Sie Ihre BUFViewController.m dem bearbeiten:

#import "BUFViewController.h" 

@interface BUFViewController() 

@end 

@implementation BUFViewController 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
    [self.parentViewController.navigationController setNavigationBarHidden:YES]; 
    self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(done)]; 
} 

-(void)done{ 
    [self.parentViewController.navigationController popToRootViewControllerAnimated:YES]; 
} 

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

@end 

Sie haben als UITabBarController denken in Ihrem Elternteil NavigationController, also wollen Sie die Eltern UINavigationBar verstecken und Ihre anzeigen. Danach können Sie mit popToRootViewControllerAnimated: UINavigationController des Elternteils zu Ihrem Tisch zurückkehren.

Hoffnung, das hilft :)

+0

Danke für Ihre Antwort. Ich habe Ihre Idee ausprobiert, und es funktioniert, aber es tötet auch die "Zurück-Taste", die normalerweise erscheinen würde. (Da das zu der überlagernden Navigationsleiste hinzugefügt wird). Ich weiß nicht, ob es hier 2 Navigationsleisten gibt. Aber mit einem (meinem ersten Screenshot) kann ich keine Titel oder Schaltflächen hinzufügen. – Matthijn

+1

wirklich, wir mussten den Zurück-Knopf neu erstellen, der gut funktioniert. – ErickBergmann

+0

Ich sehe Ihre Bearbeitung und könnte die Zurück-Taste in Code tatsächlich hinzufügen, und es funktioniert. Aber fehlt mir hier etwas? Dass dies auf eine elegantere Weise geschehen könnte. – Matthijn

1

Sie müssen diese View-Controller durch UINavigationViewControllers ersetzen.

Löschen Sie die rechten zwei View-Controller.

Ziehen Sie 2 UINavigationViewControllers auf das Storyboard und positionieren Sie sie wie gewünscht.

Dann müssen Sie diese neuen Navigationsansicht-Controller mit dem Tab-Leiste-Controller verknüpfen. Klicken Sie mit der Strg-Taste und ziehen Sie vom Tab-Controller zu den Navigations-Controllern. Wählen Sie "View Controller" aus dem Abschnitt "Relationship Segue" des Menüs, das angezeigt wird. Tun Sie dies für beide Navigationssteuerungen.

+0

Ja, ich habe es versucht (ich habe meine Frage aktualisiert), da das meine ursprüngliche Idee war. Dann kann ich einen Titel in den Storyboard-Builder einfügen, aber er wird nicht angezeigt, wenn ich die App ausführe. – Matthijn

+0

Haben Sie versucht, die obere Leiste in der Attribut-Inspektoransicht Ihres Storyboards explizit zu setzen, anstatt "abgeleitet" zu verwenden? – Kamaros

+0

Wenn Sie explizit dieses Eingabefeld verwenden, dann [ja] (http://cl.ly/VQGx). Wie Sie sehen können, kann ich auch einen Balken in der Leiste ziehen. Beim Ausführen dieser App wird für diese Ansicht jedoch nur die leere Navigationsleiste angezeigt. – Matthijn

3

ich Ihnen Test-App sah, und ich den Titel sehen, sehr schwach, unter der Navigationsleiste. Sie können beide Navigationsleisten sehen, wenn Sie den Tab-Controller auswählen und das Kontrollkästchen "Under Top Bars" deaktivieren. Dies gibt Ihnen jedoch einen seltsamen Schatten auf der Navigationsleiste. Ich weiß nicht, ob es eine einfache Möglichkeit gibt, das zu beheben, aber ich denke nicht, dass diese Benutzeroberfläche mit zwei Navigationsleisten irgendwie gut aussieht. Möglicherweise möchten Sie den ursprünglichen Navigationscontroller entfernen und stattdessen einen modalen Übergang verwenden, um den Tab-Controller anzuzeigen. Sie könnten den Navigationssteuerelementen ein Balkenschaltflächenelement hinzufügen, das Sie weiterhin den Modalansicht-Controller deaktivieren müssten.

0
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([segue.identifier isEqualToString:@"Overview_Register"]) 
    { 
     WDRegisterViewController *obj=(WDRegisterViewController *)[segue destinationViewController]; 
     [email protected]"Edit Profile"; 
     obj.isRegister=NO; 
    } 
} 

      [self performSegueWithIdentifier:@"Overview_Measure" sender:nil]; 



    UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
    WDPeekViewController *Peek = (WDPeekViewController *)[sb instantiateViewControllerWithIdentifier:@"WDPeekViewController"]; 
[self.navigationController pushViewController:tabBarController animated:YES]; 
10

Nur für den Fall der Suche nach einem schnellen Ansatz jemand wurde:

tabBarController?.title = "Your Title" 
tabBarController?.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Right Button Title", style: UIBarButtonItemStyle.Plain, target: self, action: "rightButtonFunction") 

Der Code am besten in viewDidAppear oder viewWillAppear so der Titel und die Schaltfläche ändern wie die verschiedenen Registerkarten gedrückt platziert wird.

Sie würden auch die zusätzlichen Navigationssteuerungen mit diesem Ansatz nicht benötigen.

Verwandte Themen