我有项目,它有很多view controllers
,例如StartViewController
(导航栏)。此外,processViewController
和processViewController
还有很多views
,processViewController
没有导航栏。
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
这些行会出错。
我该如何解决?如何在没有导航栏视图控制器的情况下使用导航栏视图控制器?
答案 0 :(得分:8)
如何从没有导航栏的视图控制器转到使用一个控制器查看控制器的唯一方法是以模态方式显示。
因此,当您创建要在其父视图控制器中显示的视图控制器时,将此目标控制器嵌入导航控制器中,然后显示包含目标视图控制器的导航控制器。
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)
这是因为您尝试在课程中获取navigationController
或navigationBar
或viewcontroller
未嵌入导航控制器。因此,您将nil
设为navigationbar
或navigationController
,以便您无法设置其属性,因为当前viewcontroller
为零或不存在。
在viewcontroller
中管理具有导航控制器embed
!