Ich habe eine Navigationssteuerung hinzugefügt, um in meiner App zwischen Ansichten zu wechseln. Einige Ansichten sollten jedoch nicht die Schaltfläche "Zurück" (vorheriger Titel) haben. Irgendwelche Ideen, wie man den Zurück-Knopf verstecken kann?
Ziel c:self.navigationItem.hidesBackButton = YES;
Schnell:navigationItem.hidesBackButton = true
Am besten kombinieren Sie diese, sodass die Schaltfläche "Zurück" auch dann versteckt wird, wenn Sie sie manuell einrichten:
self.navigationItem.leftBarButtonItem=nil;
self.navigationItem.hidesBackButton=YES;
schaltfläche "Zurück" mit untenstehendem Code ausblenden ...
[self.navigationItem setHidesBackButton:YES animated:YES];
oder
[self.navigationItem setHidesBackButton:YES];
Auch wenn Sie benutzerdefinierte UINavigationBar
haben, versuchen Sie es mit dem folgenden Code
self.navigationItem.leftBarButtonItem = nil;
In Swift :
Fügen Sie dies dem Controller hinzu
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.setHidesBackButton(true, animated: false)
}
Verwenden Sie den Code:
self.navigationItem.backBarButtonItem=nil;
In der Funktion viewDidLoad des UIViewControllers verwenden Sie den Code:
self.navigationItem.hidesBackButton = YES;
Vergessen Sie nicht, dass Sie es für das Objekt aufrufen müssen, das über den Nav-Controller verfügt. Wenn Sie zum Beispiel einen Nav-Controller auf einen Registerkarten-Controller mit einem RootViewController drücken, führt der Aufruf von self.navigationItem.hidesBackButton = YES
auf dem RootViewController zu nichts. Sie müssten eigentlich self.tabBarController.navigationItem.hidesBackButton = YES
anrufen
Vergessen Sie nicht, dass wir jetzt die Folie zum Zurückführen haben. Wahrscheinlich möchten Sie dies auch entfernen. Vergiss nicht, es bei Bedarf wieder zu aktivieren.
if ([self.navigationItem respondsToSelector:@selector(hidesBackButton)]) {
self.navigationItem.hidesBackButton = YES;
}
if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
self.navigationController.interactivePopGestureRecognizer.enabled = NO;
}
Fügen Sie diesen Code in Ihren View-Controller ein
UIView *myView = [[UIView alloc] initWithFrame: CGRectMake(0, 0, 300, 30)];
UIBarButtonItem *btnL = [[UIBarButtonItem alloc]initWithCustomView:myView];
self.navigationItem.leftBarButtonItem = btnL;
Es funktionierte nicht in allen Fällen für mich, wenn ich unterging
self.navigationItem.hidesBackButton = YES;
in viewWillAppear oder ViewDidLoad, funktionierte jedoch einwandfrei, wenn ich es in init des viewControllers setze.
Für mich schien nichts von dem oben genannten zu funktionieren, es hatte keine visuelle Wirkung. Ich verwende Storyboards mit einer Ansicht, die in einen Navigationscontroller "eingebettet" ist.
Ich füge dann auf Codeebene meine menuItems hinzu und aus irgendeinem Grund ist die "backButton" sichtbar, wenn die Ansichtshierarchie visuell debugiert wird, und mein menuItem-Symbol wird unter der unsichtbaren "Zurück-Schaltfläche" angezeigt.
Ich habe die Einstellungen ausprobiert, wie bei den verschiedenen Hook-Methoden vorgeschlagen und das hatte keine Auswirkung. Dann versuchte ich eine brutalere Herangehensweise und wiederholte die Unteransicht, die ebenfalls keine Auswirkung hatte.
Ich überprüfte meine Icon-Größen und schien in Ordnung zu sein ... Nachdem ich auf die Apple Human Interface-Richtlinie Bezug genommen hatte, bestätigte ich, dass meine Icons korrekt sind. (1 Pixel kleiner in meinem Fall 24px 48px 72px).
Der seltsamste Teil ist dann der eigentliche Fix ...
Wenn Sie das BarButton-Element hinzufügen, geben Sie ihm einen Titel mit mindestens einem Zeichen , In meinem Fall ein Leerzeichen.
Hoffentlich hilft das jemandem.
//left menu - the title must have a space
UIBarButtonItem *leftButtonItem = [[UIBarButtonItem alloc] initWithTitle:@" " <--THE FIX
style:UIBarButtonItemStylePlain
target:self
action:@selector(showMenu)];
leftButtonItem.image = [UIImage imageNamed:@"ic_menu"];
[self.navigationItem setLeftBarButtonItem:leftButtonItem];
versuchen Sie es mit diesem self.navigationController?.navigationItem.hidesBackButton = true
In c # oder Xamarin.ios ist this.NavigationItem.HidesBackButton = true;