iOS:隐藏navigationItem的backButton - AND ITS TEXT

时间:2016-03-14 06:08:51

标签: ios swift cocoa-touch uiviewcontroller uinavigationcontroller

我有一个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

并且文本(标签栏控制器的标题)仍然存在:

The stuck text

我不想跳到这是一个错误的结论,但这可能是iOS中的一个错误?

我已经尝试了这里找到的所有答案: iOS 8: UINavigationController hide back button,但他们都没有给我成功。

6 个答案:

答案 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;