iOS 8:UINavigationController隐藏后退按钮

iOS 8:UINavigationController隐藏后退按钮,ios,objective-c,ios8,back-button,iphone-6,Ios,Objective C,Ios8,Back Button,Iphone 6,在iOS 8(XCode 6.0.1,iPhone 6)中运行我的应用程序后,后退按钮不会隐藏 我的代码: - (void)removeCategoriesButton { if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) { [_navigationController.topViewController.navigationItem setHidesBackButton:YES];

在iOS 8(XCode 6.0.1,iPhone 6)中运行我的应用程序后,后退按钮不会隐藏

我的代码:

- (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];
        }
    }
}
但后退按钮不会隐藏(请参见屏幕截图):

UPD:


我在另一个模拟器中运行应用程序,我只在iOS 8上看到这个“bug”。

您在哪里编写的代码

它应该像在视图控制器的loadView/viewDidLoad:方法中添加这个一样简单

[self.navigationItem setHidesBackButton:YES];

这适用于我在iPhone 6上使用ViewD调用加载以下方法:

目标C:

self.navigationItem.leftBarButtonItem = nil;

斯威夫特:

navigationItem.hidesBackButton = true

我发现这是由于在ViewWillDisplay中按一个新视图造成的,如果我将其移动到ViewDidDisplay,则返回按钮不会显示。奇怪的是,这个问题只出现在iOS8中。

这个错误只发生在您使用故事板时。另一个解决方案是添加一个标题为空的uibarbuttonite来“伪造”它

这对我很有效

-(void)viewWillAppear:(BOOL)animated {

    [super viewWillAppear:animated];

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

我发现的唯一方法是隐藏导航栏并在情节提要中添加导航栏,然后在下一个ViewController中重新显示导航栏。我所要做的就是在状态栏中添加一个标签,以便导航栏是统一的。我没有找到其他的方法

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

以便导航栏显示在下一个viewcontroller中,请在中声明:

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

}
试试这个:

[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];
    }
}

尝试在
viewwillappearch()
方法中使用
self.navigationItem.hidesBackButton=true
,这对我很有效。

我尝试了许多答案,但唯一对我有效的是:

    override func viewDidLoad() {
    super.viewDidLoad()

    let backButton = UIBarButtonItem(title: "", style: UIBarButtonItemStyle.Plain, target: navigationController, action: nil)
    navigationItem.leftBarButtonItem = backButton
}
斯威夫特:

self.navigationItem.hidesBackButton = true

使用setHidesBackButton隐藏后退按钮仅在未自定义按钮时有效

从方法参考:“如果此导航项是顶部项,则应隐藏“后退”按钮,请指定true。如果“后退”按钮应可见,则指定false,假定它未被自定义项替换。” (注意最后一行)

在这种情况下,简单的解决方案是首先将leftBarButtonim设置为nil

Swift 3.0:

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

在iPad上一切正常。后退按钮成功隐藏。iOS中是否存在此漏洞?同样存在此问题,您是否找到了解决方案?对我来说,后退按钮也不起作用,除非我删除setHidesBackButton:yes请检查self.navigationItem.backbarbuttoneim=nil-Hmm。。。不工作。我在
viewDidLoad
中添加了调用此方法。如果需要,从控制器调用此代码
removeCategoriesButton
视图将出现
。我尝试从
viewDidLoad
调用此代码,但不起作用。然后尝试在执行此操作的ViewController上调用它。例如,如果这是您的第二个ViewController,请编写我在第一个ViewController ViewDidLoad方法上发布的代码。这是可行的,但在隐藏它之前,它会立即显示“后退”按钮是的-我确实注意到了这一点。我现在已经开始用Swift写作了,它似乎在viewDidLoad中工作,没有任何问题。嗯。。奇怪的是,我也在使用swift,但在viewDidLoadswift code=self.navigationItem.hidesBackButton=True中使用swift仍然存在问题。这很有效。以前我尝试过
[self.navigationItem setHidesBackButton:YES]但返回按钮文本仍然保留。很好的提示,但对我来说,它只是在iOS 7中。
self.navigationItem.leftBarButtonItem = nil
self.navigationItem.setHidesBackButton(true, animated: false)