设置自定义navigationBar后认为无法正常工作

时间:2016-01-21 22:42:26

标签: ios swift uinavigationcontroller

我正在从loadVC执行segue到containterVC,我在其中设置了navigationController并将其rootViewController设置为mainVC

containterVC中的viewDidLoad中的代码:

override func viewDidLoad() {
    super.viewDidLoad()
    mainVC = UIStoryboard.mainVC()  //This is an extension to UIStoryboard
    //Setting up the delegate:
    mainVC.delegate = self




    //rootViewController - ten najbardziej na dole
    myNavigationController = UINavigationController(rootViewController: mainVC)
    //Storing the root view as currentViewController:
    self.currentViewController = mainVC
    myNavigationController.addChildViewController(mainVC)
    self.view.addSubview(myNavigationController.view)
    addChildViewController(myNavigationController)
    myNavigationController.didMoveToParentViewController(self)


    //Trying to set up the navigation bar
    let bar = myNavigationController.navigationBar
    //Navigation bars:
    bar.barTintColor = UIColor.blackColor()
    bar.tintColor = UIColor.whiteColor()
    bar.translucent = false
}

我启动了这个项目。和?一切正常。

然后我尝试在“bar.translucent = false”行下添加这些:

    print("statement1")
    let menuButton = UIBarButtonItem(title: "Menu", style: UIBarButtonItemStyle.Plain, target: self, action: "")
    print("statement2")
    let item = myNavigationController.navigationItem
    print("statement3")
    item.leftBarButtonItem = menuButton
    print("statement4")
    bar.items = [item]
    print("statement5")

启动项目后,将显示最多4个打印语句,而不显示第5个。所以似乎loadVC和containterVC之间的segue已完成,但我没有看到设置为rootViewController的mainVC屏幕。

当我删除“bar.items = [item]”行时,项目按原样运行,但导航栏中没有“菜单”按钮。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

您可以使用"容器视图"从故事板中直接在故事板中嵌入一个UINavigationController和mainVC。

无论如何,我认为myNavigationController.addChildViewController(mainVC)没有必要。

此外,条形图项应设置为mainVC的navigationItem,而不是navigationController的条形图。

你也没有提到你使用的是什么类型的。