我正在执行从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。