跨多个情节提要的导航栏

时间:2018-07-12 23:39:56

标签: ios swift uinavigationcontroller uinavigationbar segue

我已将我的视图分为多个情节提要,以使团队管理项目变得更加容易。唯一的问题是,我希望所有不同的视图控制器都具有导航栏。我将第一个视图控制器嵌入到添加了导航栏的导航控制器中。在第二个情节提要中,我想将视图限制在导航栏上,但是,由于此视图控制器未嵌入在导航控制器中,因此没有任何内容可以将视图限制在其中。我放置了一个没有导航控制器的导航栏来进行约束,但是,当我从第一个情节提要板执行segue时,这将导致两个导航栏。我该如何做,以便可以将视图约束到导航栏而无需两个视图?预先感谢!

3 个答案:

答案 0 :(得分:0)

我不确定您的问题。我猜想您想使用一个导航栏来限制不同故事板中的许多UIViewController。这是我的答案。

第1步:在每个UIViewController中设置情节提要ID

enter image description here

第2步:推送新的UIViewController

    func switchNextView() {
      let storyboardName:String = "xxxxxx"
      let storyboardId:String = "xxxxx"

      let storyboard = UIStoryboard(name: storyboardName, bundle: nil)
      let vc: UIViewController = 
         storyboard.instantiateViewController(withIdentifier: storyboardId) as! 
         UIViewController
      self.navigationController?.pushViewController(vc, animated: true)
  }

答案 1 :(得分:0)

您可以通过三种方式从视图控制器上切换到另一种:-

首先像现在一样使用segue

second您可以通过

展示您的视图控制器
let storyboard = UIStoryboard(name: "MyStoryboardName", bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: "someViewController")
self.present(controller, animated: true, completion: nil) 

第三,您可以通过

导航视图控制器
let storyboard = UIStoryboard(name: "MyStoryboardName", bundle: nil)
    let controller = storyboard.instantiateViewController(withIdentifier: "someViewController")
    self.navigationController?.pushViewController(controller, animated: true) 

答案 2 :(得分:0)

感谢您的帮助。如@ Paulw11的评论中所述,以下方法有效

“仅限于顶部布局指南。这将在运行时尊重导航栏。”

再次感谢您的帮助!干杯。