如何在Swift中从“无导航栏视图控制器”转换为“带有导航栏视图控制器”

3
我有一个项目,其中有许多视图控制器,例如StartViewController(带有导航栏)。还有processViewController和processViewController具有许多视图,而processViewController没有导航栏。 processViewController有一个“关闭按钮”,并且有以下操作;
@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

这些行代码出现了错误。

我该如何解决?如何从没有导航栏的视图控制器到有导航栏的视图控制器?


@Anbu.Karthik 兄弟,这里是代码:navigationController!.navigationBar.barTintColor = UIColorFromRGBs(0x000000)。 - SwiftDeveloper
@Anbu.Karthik 不带导航栏segue到带有导航栏的视图控制器,我认为这样会更好。 - SwiftDeveloper
你是否已声明了UIColorFromRGBs方法? - Anbu.Karthik
@Anbu.Karthik,是的,运行得很好! - SwiftDeveloper
好的,出了什么错误?你能展示一下错误吗? - Anbu.Karthik
显示剩余2条评论
2个回答

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
由于您正在尝试在未嵌入导航控制器的类或视图控制器中获取navigationControllernavigationBar,因此您将获得nil作为navigationbarnavigationController,因此您无法设置它的属性,因为它为空或不存在于当前的viewcontroller
在具有导航控制器embedviewcontroller中管理这些内容!

你需要在嵌入了导航控制器的viewController中设置导航栏的不同属性!!告诉我你在哪里设置barTintColor?而且你的问题也不是很清楚,你到底想要什么!请提供必要的信息,以便我能够帮助你! - Ketan Parmar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接