我有一个UITabBarController
(我应用的主页),使用navigationController
来显示第二个UIViewController
。我想完全隐藏第二个viewController的后退按钮。
在我的第二个UIViewController
viewDidLoad()
我试图以多种方式隐藏后退按钮(我已经尝试了所有合理的子集):
navigationItem.hidesBackButton = true
navigationItem.setLeftBarButtonItems(nil, animated: true)
navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .Plain, target: nil, action: nil)
navigationItem.setHidesBackButton(true, animated: false)
let backButton = UIBarButtonItem(title: "", style: UIBarButtonItemStyle.Plain, target: navigationController, action: nil)
navigationItem.leftBarButtonItem = backButton
并且文本(标签栏控制器的标题)仍然存在:
我不想跳到这是一个错误的结论,但这可能是iOS中的一个错误?
我已经尝试了这里找到的所有答案: iOS 8: UINavigationController hide back button,但他们都没有给我成功。
答案 0 :(得分:1)
试试这个
override func viewWillAppear(animated: Bool) {
self.tabBarController?.navigationItem.hidesBackButton = true
}
或
self.navigationItem.setLeftBarButtonItem(nil, animated: true)
答案 1 :(得分:0)
使用此代码隐藏后退按钮
for Objective-C
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
self.navigationItem.hidesBackButton=YES;
}
for Swift
navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .Plain, target: nil, action: nil)
答案 2 :(得分:0)
我找不到答案,但我找到了解决方法。
我会保持开放,希望有一天能有更好的答案。
我的解决方案:
将第二个UIViewController
换入新的UINavigationController
。现在navigationItem.leftBarButtonItems = [<YOUR BACK BUTTON>]
成功覆盖了后退按钮。
答案 3 :(得分:0)
您只需在Xcode中选择导航控制器并转到xcode右侧面板中的属性检查器,然后在导航cotroller部分中取消选择显示导航栏。enter image description here
在下面显示的第二个视图控制器中还有两个选项:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
option 1 navigationController?.setNavigationBarHidden(true, animated: false)
option 2 navigationController?.navigationItem.hidesBackButton = true
}
答案 4 :(得分:0)
我不知道为什么,但以下方法对我有用。在加载目标viewcontroller之前,我们应该隐藏后退按钮。这是在Swift 3,XCode 8,iOS 10 Simulator中测试的。
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "destinationSegue" {
let destinationVC = segue.destination as! DestinationViewController
destinationVC.navigationItem.setHidesBackButton(true, animated: false)
}
}
答案 5 :(得分:-2)
只需使用以下内容:
self.navigationItem.hidesBackButton = true;