2016-01-21 33 views
0

我執行從我loadVC一個原因請看containterVC中,我成立了一個navigationController,並設置它的RootViewController的到mainVC順着接下去設置自定義的導航欄

代碼中viewDidLoad中的containterVC後不工作:

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 =假」行添加這些:

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]」行時,項目按原樣運行,但導航欄中沒有「Menu」按鈕。

我在做什麼錯?

回答

1

您可以在故事板中使用「容器視圖」,並將UINavigationController與mainVC直接嵌入故事板。我想myNavigationController.addChildViewController(mainVC)沒有必要。

此外酒吧項目應設置爲mainVC的navigationItem,而不是navigationController的。

另外你沒有提到你使用了什麼樣的segue。

+0

我正在使用「顯示(例如推)」segue。我知道將它全部放在故事板中,但這是我的第一個項目,我試圖學習儘可能多的預編碼功能以及它們如何工作 – Ancinek

+0

由於您使用「顯示(例如推)」,因此您想要配置哪個導航控制器 - 根目錄還是嵌入目錄(myNavigationController)?我通過閱讀你的問題來猜測myNavigationController。如果是這樣,嘗試將條形項設置爲mainVC的navigationItem,而不是navigationController的。 – KoCMoHaBTa

+0

將條形項目設置到UINavigationController堆棧中的ViewController而不是NavigationController本身就是答案!感謝民間! – Ancinek