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 不起作用的主要内容,如果未能解决你的问题,请参考以下文章
UINavigationController 后退按钮消失?