it-swarm.com.de

iOS 8: UINavigationController-Zurückschaltfläche

Nachdem ich meine Anwendung unter iOS 8 (XCode 6.0.1, iPhone 6) ausgeführt habe, wird die Zurück-Schaltfläche nicht ausgeblendet.

Mein Code:

- (void)removeCategoriesButton
{
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
        [_navigationController.topViewController.navigationItem setHidesBackButton:YES];
        [_navigationController.topViewController.navigationItem setLeftBarButtonItem:nil];
    } else {
        UIViewController *controller = _app.window.rootViewController;

        if ([controller isKindOfClass:[UINavigationController class]]) {
            UINavigationController *nav = (UINavigationController *)controller;
            [nav.topViewController.navigationItem setHidesBackButton:YES];
            [nav.topViewController.navigationItem setLeftBarButtonItem:nil];
        }
    }
}

Der Zurück-Button wird jedoch nicht ausgeblendet (siehe Screenshot):

Simulator screen

UPD:

Ich führe die Anwendung in anderen Simulatoren aus und sehe diesen "Fehler" nur unter iOS 8.

18
ZhukV

Das hat bei mir funktioniert. 

-(void)viewWillAppear:(BOOL)animated {

    [super viewWillAppear:animated];

    [self.navigationItem setHidesBackButton:YES];
    [self.navigationItem setTitle:@"Home"];
}
45
scrainie

Ich habe viele der Antworten ausprobiert, aber die einzige, die für mich funktionierte, war:

    override func viewDidLoad() {
    super.viewDidLoad()

    let backButton = UIBarButtonItem(title: "", style: UIBarButtonItemStyle.Plain, target: navigationController, action: nil)
    navigationItem.leftBarButtonItem = backButton
}
14
eric f.

Rufen Sie in Ihrem ViewDidLoad die folgende Methode auf:

Ziel c:

self.navigationItem.leftBarButtonItem = nil;

oder

self.navigationItem.hidesBackButton = YES;

Schnell:

navigationItem.hidesBackButton = true
6
LS_

Schnell: 

self.navigationItem.hidesBackButton = true
4
William Hu

Ich fand heraus, dass dies durch das Drücken einer neuen Ansicht in viewWillAppear verursacht wurde. Wenn ich sie auf viewDidAppear bewegte, wurde die Zurück-Schaltfläche nicht angezeigt. Seltsam, dass dieses Problem nur in iOS8 auftrat.

3

Versuche dies:

[self.navigationItem setHidesBackButton:YES];

for (UIView *view in self.navigationController.navigationBar.subviews)
{
    NSString *name = [NSString stringWithFormat:@"%@",view.class];
    if ([name isEqualToString:@"UINavigationItemButtonView"] || [name isEqualToString:@"_UINavigationBarBackIndicatorView"]) {
        [view setHidden:YES];
    }
}
2
Chun-Wei Chen

Versuchen Sie, self.navigationItem.hidesBackButton = true in der viewWillAppear()-Methode zu verwenden, das hat bei mir funktioniert.

1
Array

Das Ausblenden der Zurück-Schaltfläche mit setHidesBackButton funktioniert nur, wenn Sie die Schaltfläche nicht angepasst haben.

Von der Methodenreferenz: "Geben Sie true an, wenn die Zurück-Schaltfläche ausgeblendet werden soll, wenn dieses Navigationselement das oberste Element ist. Geben Sie false an, wenn die Zurück-Schaltfläche sichtbar sein soll, vorausgesetzt, sie wurde nicht durch ein benutzerdefiniertes Element ersetzt." Beachten Sie die letzte Zeile)

Die einfache Lösung in diesem Fall ist, zuerst das leftBarButtonItem auf null zu setzen.

Swift 3.0:

self.navigationItem.leftBarButtonItem = nil
self.navigationItem.setHidesBackButton(true, animated: false)
1
Nico teWinkel

Wo hast du diesen Code geschrieben?

Es sollte so einfach sein wie in der loadView/viewDidLoad: -Methode Ihres View-Controllers

[self.navigationItem setHidesBackButton:YES];

Das funktioniert für mich auf einem iPhone 6

1
SomeGuy

Die einzige Möglichkeit, dies zu erreichen, besteht darin, die Navigationsleiste auszublenden, eine Navigationsleiste im Storyboard hinzuzufügen und die Navigationsleiste im nächsten ViewController erneut anzuzeigen. Alles was ich tun musste, war ein Label in der Statusleiste hinzuzufügen, so dass die Navigationsleiste einheitlich ist. Ich habe keinen anderen Weg gefunden ...

screen

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

damit die Navigationsleiste im nächsten Viewcontroller angezeigt wird, geben Sie Folgendes an:

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

}
0
oscar castellon

Dieser Fehler tritt nur auf, wenn Sie das Storyboard verwenden. Eine andere Lösung besteht darin, ein UIBarButtonItem mit leerem Titel hinzuzufügen, um es zu "fälschen". 

0
Yue-Hsun Lin