Wie verstecke ich die Schaltfläche "Zurück" in der Navigationsleiste des iPhone?

315

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?

Chilly Zhong
quelle

Antworten:

811

Ziel c:
self.navigationItem.hidesBackButton = YES;

Schnell:
navigationItem.hidesBackButton = true

user8170
quelle
@ user8170 Wie verstecke ich den linken Barbutton in der Navigationsleiste?
Rockey
9
Sie können den Backbutton nicht verstecken 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
rakeshNS
1
In iOS 7 ist self.navigationItem.leftBarButtonItem = nil; wirkt sich nicht auf die Schaltfläche "Zurück" aus, wenn sie von viewDidLoad, viewWillAppear oder viewDidAppear ausgegeben wird. Diese Codezeile funktioniert in viewdidLoad: self.navigationItem.hidesBackButton = YES;
Alex Zavatone
2
Ich bin mir nicht sicher, ob dies hilft, aber 'self' ist immer ein Ansichts-Controller, der oben auf dem Stapel des Navigations-Controllers angezeigt wird.
Kunal Balani
self.navigationItem.hidesBackButton = YES; arbeitet für mich in viewDidLoad, ios 7
leukosaima
38

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;
Skrew
quelle
6
Um user716216 zu beantworten, erklärte er es in seiner Erklärung mit einem Satz. Die zweite Codezeile funktioniert für den Standardfall. Die erste Codezeile funktioniert, wenn Sie die Schaltfläche selbst erstellt und hinzugefügt haben.
Alex Zavatone
21

Zurück-Schaltfläche mit Balgcode ausblenden ...

[self.navigationItem setHidesBackButton:YES animated:YES];

oder

[self.navigationItem setHidesBackButton:YES];

Auch wenn Sie benutzerdefinierte haben, UINavigationBardann versuchen Sie unten Code

self.navigationItem.leftBarButtonItem = nil;
Paras Joshi
quelle
In jeder Klasse, in der Sie diesen Code verwendet haben, wird die Zurück-Schaltfläche in der Navigationsleiste dieser Klasse ausgeblendet ...
Paras Joshi
6

In Swift :

Fügen Sie dies dem Controller hinzu

override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationItem.setHidesBackButton(true, animated: false)
}
König-Zauberer
quelle
3

Verwenden Sie in der Funktion viewDidLoad des UIViewController den folgenden Code:

self.navigationItem.hidesBackButton = YES;
indiefr
quelle
2

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 = YESdes RootViewControllers zu nichts. Sie müssten tatsächlich anrufenself.tabBarController.navigationItem.hidesBackButton = YES

Tyler
quelle
2

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;
}
Bruno Delgado
quelle
1

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;
Bhavsar1311
quelle
1

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];
Wayne
quelle
1

Es hat bei mir nicht in allen Fällen funktioniert, als ich eingestellt habe

self.navigationItem.hidesBackButton = YES;

in viewWillAppear oder ViewDidLoad, funktionierte aber perfekt, als ich es in init des viewController einstellte.

Joe M.
quelle
0

Probier diese - self.navigationController?.navigationItem.hidesBackButton = true

Ahil Rahesh
quelle
0

In c # oder Xamarin.ios ist this.NavigationItem.HidesBackButton = true;

Anisetti Nagendra
quelle
0
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 = ""

Geben Sie hier die Bildbeschreibung ein

ahmet yilmaz
quelle