hidesBackButton / setHidesBackButton 不起作用

Posted

技术标签:

【中文标题】hidesBackButton / setHidesBackButton 不起作用【英文标题】:hidesBackButton / setHidesBackButton not working 【发布时间】:2013-07-19 13:04:22 【问题描述】:

我的申请有问题。

在我的应用程序中,可以编辑一些信息(比如 iPhone 的联系人)。当您按下导航栏右侧的“编辑”按钮时,“返回”按钮应隐藏,并出现“取消”按钮。

当用户直接从 ViewController 按下“编辑”按钮时,它工作得很好。

但是,当用户创建新广告时,具有编辑功能的视图控制器应该以编辑模式打开。我这样称呼它:

VICarInfo * vc = [[VICarInfo alloc] init];
[vc setCurrentAdv:adv];
[self.navigationController pushViewController:vc animated:YES];

if (editMode) 
    [self.navigationItem setHidesBackButton:YES animated:NO];
    [vc btnEditClick];

而且“返回”按钮并没有消失。

我还尝试在 ViewWillAppear、ViewDidLoad 或 ViedDidLayout 子视图中隐藏按钮,也未成功。

请给我任何建议,如何去做。

谢谢。

【问题讨论】:

TLDR: vc.navigationItem.hidesBackButton 而不是 navigationItem.hidesBackButton - 了解Navigation Controller 使用的Navigation Item 是您所拥有的View Controller 要去推。这意味着您需要在您展示的 VC 的 NavigationItem 中修改后退按钮设置。 【参考方案1】:

使用这个:

    self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:[[UIView alloc] init]];

【讨论】:

这太棒了!谢谢!【参考方案2】:

我知道这已经晚了,但我看到了同样的事情并找到了解决方案。

似乎 hidesBackButton = YES 会干扰设置 leftBarButtonItem(s)。

不要使用 hidesBackButton,你会失去覆盖。

这似乎是一个错误,但 Apple 自己的文档对这两个/三个属性的交互非常模糊。

【讨论】:

【参考方案3】:

试试这个..

[self.navigationItem setLeftBarButtonItem:nil];
[self.navigationItem setHidesBackButton:YES];

【讨论】:

现在你遇到了什么问题 还是一样,没什么变化。 这对我有用。所以请检查您的代码是否有问题。【参考方案4】:

ios 5.0 起:

self.navigationItem.leftItemsSupplementBackButton = ?;

否 - 让 leftBarButtonItems 隐藏 backButtonItem(默认), 是 - leftBarButtonItems 与 backButtonItem 共存

然而,似乎仍然存在一个 iOS 7 错误,它不加选择地隐藏(或不隐藏)backButtonItem。

【讨论】:

【参考方案5】:

在真机上试一试。在真实设备上显示自定义图像。但不是 ios 模拟器。如果您在模拟器上进行测试,您将看到 ios 默认的后退按钮。

【讨论】:

以上是关于hidesBackButton / setHidesBackButton 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Vim 基本常用设置

Swift 隐藏后退按钮

iOS 7 backBarButtonItem 隐藏

UINavigationController 后退按钮消失?

如何在 uinavigationcontroller 中隐藏后退按钮

如何隐藏导航栏后退按钮