我正在执行从loadVC到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之间的任务,但是我看不到设置为rootViewController的mainVC屏幕。

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

我究竟做错了什么?

最佳答案

您可以仅使用情节提要中的“容器视图”,并将UINavigationController与您的mainVC直接嵌入情节提要中。

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

此外,栏项目应设置为mainVC的navigationItem,而不是navigationController的。

您也没有提到您正在使用哪种segue。

10-08 06:13