如何在Swift中将“没有导航栏视图控制器”转到“带导航栏视图控制器”

时间:2016-09-09 08:01:29

标签: ios swift storyboard

我有项目,它有很多view controllers,例如StartViewController导航栏)。此外,processViewControllerprocessViewController还有很多viewsprocessViewController 没有导航栏

processViewController有Close button,行动有;

@IBAction func goStart(sender: UIButton) {
    let secondViewController = self.storyboard?.instantiateViewControllerWithIdentifier("StartViewController") as! StartViewController
    self.navigationController?.pushViewController(secondViewController, animated: true)
}

当我按下它时;

navigationController!.navigationBar.barTintColor = UIColorFromRGBs(0x000000)
navigationController!.navigationBar.tintColor = UIColor.whiteColor();

let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 164, height: 38))
imageView.contentMode = .ScaleAspectFit
let image = UIImage(named: "logo")
imageView.image = image
navigationItem.titleView = imageView

这些行会出错。

我该如何解决?如何在没有导航栏视图控制器的情况下使用导航栏视图控制器?

2 个答案:

答案 0 :(得分:8)

如何从没有导航栏的视图控制器转到使用一个控制器查看控制器的唯一方法是以模态方式显示

因此,当您创建要在其父视图控制器中显示的视图控制器时,将此目标控制器嵌入导航控制器中,然后显示包含目标视图控制器的导航控制器。

Swift 3

let targetViewController = UIViewController() // this is that controller, that you want to be embedded in navigation controller
let targetNavigationController = UINavigationController(rootViewController: targetViewController)

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

答案 1 :(得分:1)

这是因为您尝试在课程中获取navigationControllernavigationBarviewcontroller未嵌入导航控制器。因此,您将nil设为navigationbarnavigationController,以便您无法设置其属性,因为当前viewcontroller为零或不存在。

viewcontroller中管理具有导航控制器embed

的内容