11

Ich bin herumgelaufen, wie man nur die Haupt- oder erste Navigationsleiste im Navigationssteuerpult versteckt/entfernt/disabled, damit ich ein Bild als vollständigen Hintergrundbildschirm setzen konnte, aber ich konnte keine Lösung finden.Wie kann man nur die erste uinavigationbar ausblenden/deaktivieren?

Habe versucht, die titleview in viewdidLoad der Hauptnavigation zu verstecken, hat aber nicht funktioniert. Versuchte mit NavigationBarHidden, aber es verbirgt die gesamte Navigationsleiste für den nächsten Controller-Stack.

Also ich bin mir nicht sicher, wie das geht. Um Ihnen ein Beispiel zu geben, möchte ich etwas wie diese App haben - The Masters Golf Tournament - http://appshopper.com/sports/the-masters-golf-tournament.

Wenn Sie sich Bildschirm 1 anschauen, hat er oben keine Navigationsleiste, aber wenn Sie irgendwelche Optionen berühren, wird er zu einem neuen Ansichtscontroller gehen und die Navigationsleiste wie in Bildschirm 3,4 und 5 erscheinen lassen .

Hoffe, dass jemand mir dabei helfen könnte. Vielen Dank!

Antwort

18

In den meisten meiner Anwendungen habe ich eine benutzerdefinierte UIViewController-Klasse, von der ich alle anderen benutzerdefinierten Controller ableite. In einigen davon habe ich der Basisklasse eine Methode wie navigationBarInitiallyHidden hinzugefügt, die andere Klassen überschreiben können. Das Standardergebnis hängt von der Art der Anwendung ab.

Im Delegaten des Navigations-Controllers blendet oder zeigt der Delegierte den Navigations-Controller, wenn ein Controller angezeigt wird, der diese Methode implementiert. Da ich das Verbergen oder Zeigen animiere, überprüfe ich den aktuellen Zustand und tue nichts, wenn keine Änderung erforderlich ist.

Sie könnten etwas einfacher in Ihrer Delegate-Methode tun. Wenn der angezeigte Controller der Root-Controller ist, blenden Sie die Navigationsleiste aus, andernfalls zeigen Sie sie an, wenn sie ausgeblendet ist.

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated { 
    if (viewController == rootController) { 
    [navigationController setNavigationBarHidden:YES animated:animated]; 
    } else if ([navigationController isNavigationBarHidden]) { 
    [navigationController setNavigationBarHidden:NO animated:animated]; 
    } 
} 
12

Sie können die Navigationsleiste ausblenden: [self.navigationController setNavigationBarHidden:YES]; und wo Sie in der Navigationsleiste wieder [self.navigationController setNavigationBarHidden:NO];

5

hide/disable

self.navigationController.navigationBarHidden = YES; 

Show zeigen wollen, aktivieren/

self.navigationController.navigationBarHidden = NO; 
0

Sie können die Navigationsleiste mit dem folgenden Code ausblenden. Unterhalb des Codes wird die Navigationsleiste zur Zeit von viewWillAppear ausgeblendet.

Objective C

-(void)viewWillAppear:(BOOL)animated 
{ 
     [[self navigationController] setNavigationBarHidden:YES animated:NO]; 
} 

Swift

self.navigationController?.setNavigationBarHidden(true, animated: animated)