32 Stimmen

Entfernen der Schaltfläche in der rechten Leiste aus dem Navigationselement

Ich habe eine Schaltfläche für die rechte Leiste in meinem Navigationselement hinzugefügt und möchte diese unter bestimmten Bedingungen entfernen. Dies ist, was ich tue:

self.navigationItem.rightBarButtonItem = nil;

Aber das gewünschte Verhalten wird nicht erreicht.

Ich möchte sie ausblenden, finde aber keine Methode dafür.

1voto

algazel Punkte 11

Kürzlich stand ich vor dem gleichen Problem und ich habe es gelöst (danke an Erik B., deine Antwort hat mich inspiriert! leider kann ich deine Antwort noch nicht bewerten)

Ich glaube, meine rechte Leistenschaltfläche kann nicht verschwinden, weil ich sie in viewWillAppear Funktion, und zwar bei dieser Funktion, self nicht auf den Strom bezogen ist UIViewController .

Das hat bei mir funktioniert, anstatt die Schaltfläche in viewWillAppear Ich habe es in navigationController:willShowViewController:animated: Funktion bei vorherige UIViewController .

Ich rufe zum Beispiel SecondViewController von FirstViewController und ich möchte die Schaltfläche der rechten Leiste in SecondViewController , setzen Sie dies ein FirstViewController.m :

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
    if ([viewController isKindOfClass:[SecondViewController class]]) {
        [viewController.navigationItem setRightBarButtonItem:nil];
    }
}

0voto

Jake Hargus Punkte 352

Ich habe dieses Problem beim Hinzufügen einer Navigationsleiste zu einem Viewcontroller, der nicht tatsächlich in einem Navigationscontroller eingebettet ist. In diesem Fall ist die self.navigationItem nicht das richtige Objekt für Ihre Bar-Schaltflächen zu halten. Was ich gefunden habe, funktioniert (obwohl Sie wahrscheinlich nur den Viewcontroller in einen Navigationscontroller einbetten sollten), ist eine Eigenschaft für die Navigationsleiste zu erstellen, die Sie im Interface Builder hinzugefügt haben, und sie wie üblich zu verknüpfen. In diesem Fall habe ich es "navBar" genannt.

Dann müssen Sie das Navigationselement der navBar anstelle des Navigationselements der Ansicht abrufen. In diesem Fall scheint dieser Code zu funktionieren:

UINavigationItem *item = [self.navBar.items objectAtIndex:0];
item.rightBarButtonItem = nil;

0voto

sahiljain Punkte 2045

Bei mir hat es mit dem folgenden Code funktioniert:

self.navigationItem?.rightBarButtonItem = nil
navigationBar.items = [self.navigationItem!]

0voto

Alessandro Ornano Punkte 33106

Schnell 3/4:

if let nav = self.navigationController {
   nav.navigationItem.setRightBarButtonItems(nil, animated: true)
   nav.navigationBar.topItem?.rightBarButtonItems = []
}

0voto

user1105951 Punkte 2199

Für andere: Ich habe auch versucht

self.navigationItem.rightBarButtonItem = nil;

und es hat nicht funktioniert, dann stelle ich fest, dass ich dies nicht aus der Haupt Thema.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X