如何将一个导航到另一个导航控制器iOS

时间:2018-09-02 17:25:35

标签: ios swift storyboard

我的场景中,我有三个视图控制器A,B和C。A是根视图控制器,在A按钮中单击以浏览B视图控制器,在B侧视图控制器中单击按钮来浏览C视图控制器。通过以下代码,它可以正常工作。

let vc = UIStoryboard.init(name: "Main", bundle: Bundle.main).instantiateViewController(withIdentifier: "firstview") as? ViewController
self.navigationController?.pushViewController(vc!, animated: true)

但是,每个视图控制器我都想显示单独的导航栏或导航控制器。如果我设置了条形图,它不会覆盖状态栏,但是如果我嵌入了导航控制器,它会在故事板上显示正确的条形,但是输出会显示上一个视图控制器的条形和后退按钮。这里的问题是我将视图控制器设为透明,但B和C也显示为透明。我想在B和C中显示单独的导航栏。

enter image description here

2 个答案:

答案 0 :(得分:0)

似乎您已在根视图控制器中嵌入了导航控制器,并且当您从一个Vc移到另一个Vc时,导航栏与带有后退按钮的根视图控制器相同,这很明显,因为您已将导航控制器嵌入了root查看控制器。

您可以做的一件事就是不要像这样进行锁定:

self.navigationController?.pushViewController(vc!, animated: true)

您可以尝试;

self.present(vc, animated: true, completion: nil)

此代码显示没有导航控制器的视图控制器B和C

答案 1 :(得分:0)

您将需要使用

修改/更新导航栏的标题
self.navigationItem.title = "your_title"

如果您想在导航栏中添加一些精美的视图,则可以使用

func updateTitle(_ title: String?) {
    let label = UILabel(frame: CGRect(x: 0, y: 0, width: 44, height: 400))
    label.text = title
    label.backgroundColor = .clear
    label.textColor = .white
    self.navigationItem.title = ""
    self.navigationItem.titleView = label
}

希望这会有所帮助