Ich habe ein Navigationssteuerelement hinzugefügt, um zwischen Ansichten in meiner App zu wechseln. Einige Ansichten sollten jedoch nicht die Schaltfläche "Zurück" (der vorherige Titel) haben. Irgendwelche Ideen, wie man den Zurück-Button versteckt?
Ich habe ein Navigationssteuerelement hinzugefügt, um zwischen Ansichten in meiner App zu wechseln. Einige Ansichten sollten jedoch nicht die Schaltfläche "Zurück" (der vorherige Titel) haben. Irgendwelche Ideen, wie man den Zurück-Button versteckt?
Antworten:
Ziel c:
self.navigationItem.hidesBackButton = YES;
Schnell:
navigationItem.hidesBackButton = true
self.navigationItem.leftBarButtonItem = nil;
. Wenn Sie leftbarbuttonitem explizit eingestellt haben, können Sie verwenden self.navigationItem.leftBarButtonItem = nil;
. self.navigationItem.hidesBackButton = YES;
wird Zurück Schaltfläche verstecken Item
Der beste Weg ist, diese zu kombinieren, damit die Zurück-Schaltfläche auch dann ausgeblendet wird, wenn Sie sie manuell einrichten:
self.navigationItem.leftBarButtonItem=nil;
self.navigationItem.hidesBackButton=YES;
Zurück-Schaltfläche mit Balgcode ausblenden ...
[self.navigationItem setHidesBackButton:YES animated:YES];
oder
[self.navigationItem setHidesBackButton:YES];
Auch wenn Sie benutzerdefinierte haben, UINavigationBar
dann versuchen Sie unten 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;
Vergessen Sie nicht, dass Sie es für das Objekt mit dem Navigationscontroller aufrufen müssen. Wenn Sie beispielsweise einen Navigationscontroller haben, der mit einem RootViewController auf einen Registerkartenleisten-Controller drückt, führt der Aufruf self.navigationItem.hidesBackButton = YES
des RootViewControllers zu nichts. Sie müssten tatsächlich anrufenself.tabBarController.navigationItem.hidesBackButton = YES
Vergessen Sie nicht, dass wir jetzt die Geste zum Zurückschieben haben. Sie möchten dies wahrscheinlich auch entfernen. Vergessen Sie 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;
Für mich schien keines der 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 der "backButton" beim visuellen Debuggen der Ansichtshierarchie sichtbar, 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 einen brutaleren Ansatz und iterierte über die Unteransicht, die ebenfalls keine Wirkung hatte.
Ich habe meine Symbolgrößen überprüft und schien in Ordnung zu sein. Nachdem ich mich auf die Apple Human Interface Guideline bezogen hatte, bestätigte ich, dass meine Symbole korrekt sind. (1 Pixel kleiner in meinem Fall 24px 48px 72px).
Der seltsamste Teil ist dann die eigentliche Lösung ...
Wenn Sie das BarButton-Element hinzufügen, geben Sie ihm einen Titel mit mindestens einem Zeichen , in meinem Fall ein Leerzeichen.
Hoffe das hilft 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];
Probier diese -
self.navigationController?.navigationItem.hidesBackButton = true
In c # oder Xamarin.ios ist this.NavigationItem.HidesBackButton = true;
navigationItem.leftBarButtonItem = nil
navigationItem.hidesBackButton = true
Wenn Sie diesen Codeblock in didLoad oder loadView verwenden, hat dies funktioniert, aber nicht perfekt. Wenn Sie genau hinschauen, können Sie sehen, dass sich die Schaltfläche "Zurück" versteckt, wenn Ihre Ansicht geladen wird.
Was ist die perfekte Lösung?
Fügen Sie die BarButtonItem- Komponente aus componentView (Befehl + Umschalt + L) zur Navigationsleiste Ihres Zielansichtscontrollers hinzu.
Wählen Sie im rechten Bereich BarButtonItem set Title = ""