如何在没有导航栏的情况下使用后导航栏

时间:2015-11-27 00:09:27

标签: ios swift uinavigationcontroller uinavigationbar swift2

我有一个主页面,其中有一个按钮可以转到另一个页面。

我希望当我进入第二页时,在导航栏的左上角有一个后退按钮。

我在主视图控制器中添加了一个导航控制器,然后我在第二个视图控制器(第二页)中添加了一个push segue,因此创建了一个自动后退按钮。

我想要的是我不希望导航栏在主视图控制器中,我不希望它在第二个视图控制器中,我只想在后面的按钮中第二视图控制器。

我想到了,我想出了:

self.navigationController?.setNavigationBarHidden(true, animated: false)

在主视图控制器中,实际上隐藏了导航,但这使第二个视图ctonroller松开了它的后退按钮。

你能解决我的问题吗?

这是主视图控制器(它有导航栏,但我不想拥有它)

enter image description here

这是第二个视图控制器,它有后退按钮, enter image description here

如果我离开navigatino酒吧我没有问题,如果它是透明的,请问有什么想法吗? (并且通过透明,我的意思是我可以看到我的图像吼叫它)

更新1

在第一条评论给我一个提示后,我试图像这样应用它:

class CustomNavigationBar: UINavigationBar {
    override func drawRect(rect: CGRect) {
        super.drawRect(rect)
    }
}

我将UINavigationControlelr中导航栏的类设置为自定义导航栏。 并在我的视图控件中添加以下内容:

self.navigationController?.navigationBar.translucent = true;
self.navigationController?.navigationBar.backgroundColor = UIColor.clearColor()

但结果是我的主视图控制器仍然有导航栏的位置(虽然它是空的)。我不能让这个地方透明,以便看到它的图像吗?

1 个答案:

答案 0 :(得分:4)

将其添加到主视图控制器

override func viewDidLoad() {
    super.viewDidLoad()        

    self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: UIBarButtonItemStyle.Plain, target: nil, action: nil)

    self.navigationController?.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: UIBarMetrics.Default)
    self.navigationController?.navigationBar.shadowImage = UIImage()
}

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)

    self.navigationController?.setNavigationBarHidden(true, animated: true)
}

override func viewWillDisappear(animated: Bool) {
    super.viewWillDisappear(animated)

    self.navigationController?.setNavigationBarHidden(false, animated: true)
}