After I run my application in iOS 8 (XCode 6.0.1, iPhone 6), the back button does not hide.
My 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];
}
}
}
But the back button does not hide (see screenshot):
UPD:
I run application in another simulators, and i see this "bug" only on iOS 8.
Swift:
I found that this was caused by pushing a new view in viewWillAppear, if I moved it to viewDidAppear then the back button didn't show. Strange that this issue only appeared in iOS8.
Hiding the back button using setHidesBackButton only works if you have not customized the button.
From the method reference: "Specify true if the back button should be hidden when this navigation item is the top item. Specify false if the back button should be visible, assuming it has not been replaced by a custom item." (Note the last line)
The simply solution in that case is to first set the leftBarButtonItem to nil.
Swift 3.0:
Try this:
This worked for me.