1

Wie die Frage sagt, muss ich den Inhalt der UINavigationBar ändern können, wenn verschiedene UIViewControllers von der UINavigationController angezeigt werden. Dies ist für Titel leicht erreichbar, da der Navigationscontroller nur die Titeleigenschaft des Ansichtscontrollers verwendet. Was ich damit zu tun habe, ist das Ändern der linken und rechten Balkenschaltfläche abhängig vom View-Controller.Wie ändert man UINavigationBar in Abhängigkeit von UIViewController in UINavigationController

Der Code, den ich benutzen würde, sie ändern hat sich bereits in mehreren anderen Fragen angesprochen und ist nicht wirklich das Problem, obwohl Referenz werde ich die folgende Verwendung werden: Man denke

UIBarButtonItem *newItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: 
    UIBarButtonSystemItemAdd target:self action:nil]; 
newItem.tintColor = [UIColor whiteColor]; 
self.navigationItem.rightBarButtonItem = newItem; 

ich, was ich Ich suche nach einer Methode, die jedes Mal aufgerufen wird, wenn ein neuer UIViewController vom Navigationscontroller angezeigt wird, um das Layout des Navigations-Controllers einzurichten. In der Dokumentation des UINavigationController ist die folgende Methode:

// Called when the navigation controller shows a new top view controller via a push, pop or setting of the view controller stack. 
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated; 

Allerdings ist diese Methode scheinbar nicht an irgendeiner Stelle genannt, wenn ich die app laufen. Gibt es also eine Methode, die aufgerufen wird, wenn der Navigationscontroller einen neuen View-Controller anzeigt? Oder liege ich hier völlig falsch und gibt es bereits eine akzeptierte Möglichkeit, die Navigationsleiste mit der darunter angezeigten Ansicht zu ändern, die ich bisher verpasst habe?

+0

Diese Methode Teil des 'UINavigationControllerDelegate' Protokoll ist, nicht der' UINavigationController' selbst. Haben Sie das Protokoll angenommen und den Delegierten eingestellt? – pbasdf

+0

In welcher Weise möchten Sie die Navigationsleiste ändern, die nicht automatisch passiert? – Wain

+0

Normalerweise weisen Sie die BarButton-Elemente in jedem View-Controller einzeln zu (mit einer automatisch hinzugefügten Zurück-Schaltfläche). Gibt es einen Grund, warum Sie es im Navigationscontroller machen wollen? –

Antwort

1

Die typische Lösung ist Code in jeder Ansicht Controllers viewDidLoad Verfahren zu setzen, die die gewünschten Tasten einrichtet.

Das erste Codebeispiel in Ihrer Frage wäre ein perfektes Beispiel für einen View-Controller, der eine gewünschte Schaltfläche auf der rechten Seite der Navigationsleiste anzeigt, wenn sie (der Ansichtscontroller) angezeigt wird.

Es gibt nichts, was Sie brauchen sich mit Navigation Controller Delegierten oder der Navigation-Controller zu tun.

Verwandte Themen