所以我認爲你將不得不使用一些代碼來解決您的問題,但並不多。我構建了一個測試項目來測試它,並將代碼附加圖像。 首先,如果我正確地理解了你,你有一個導航控制器推送有問題的新故事板。見附圖。
我命名故事板被推,因爲這就是發生了什麼。然後在我的故事板名爲Push這裏是設置。
在tabbarcontroller的第一個視圖控制器中,我添加了下面的代碼。顯然這隱藏了把我們推到這裏的導航控制器。如果您然後訪問控制器編號2我們新的導航控制器和項目顯示。如果隱藏導航控制器在tabbarcontroller視圖控制器1不是你想要做的那麼。繼續閱讀。
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
//or to unhide from returning the opposite ->self.parent?.navigationController?.isNavigationBarHidden = true
self.parent?.navigationController?.isNavigationBarHidden = true
}
如果你不想隱藏在第一視圖控制器導航控制器,但訪問控制器2,當你想看到你的項目,然後添加到您的viewWillAppear中,並在viewWillAppear中第一控制器改變從代碼真假。
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
// Do any additional setup after loading the view, typically from a nib.
self.parent?.navigationController?.isNavigationBarHidden = true
}
這隱藏了父導航控制器,基本上就是在您的示例中隱藏了導航控制器。所以上面隱藏了父導航控制器。這也是爲什麼呈現模態工作。您的導航控制器從一開始就隱藏起來。希望這可以幫助。
**編輯 如果你想要導航控制器在選項卡2視圖控制器,但你想保持父母在選項卡之一能夠返回與後退按鈕,你可以設置它在viewWillAppear,而不是所以它會看起來像這個在視圖控制器1中。
//tabcontroller vc 1
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.navigationController?.isNavigationBarHidden = false
}
而在帶有欄中項目的tabcontroller視圖控制器2中,您可以執行此操作。 // tabbarcontroller vc 2 with own navigationcontroller override func viewWillAppear(_ animated:Bool){ super.viewWillAppear(animated) self.parent?.navigationController ?.isNavigationBarHidden =真 }
最後,如果你想在兩個控制器可見背部按鈕,但希望不同的右按鈕做編程在viewWillAppear中
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.tabBarController?.navigationItem.setRightBarButton(UIBarButtonItem(barButtonSystemItem: .edit, target: self, action: #selector(FirstViewController.editSomthing)), animated: true)
}
如果你想在其他控制器中刪除它
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.tabBarController?.navigationItem.rightBarButtonItem = nil;
}
在上面這兩個例子中,我們保留父導航控制器,所以你不需要在uinavigati中嵌入你的視圖控制器的tab控制器在控制器上。
如果您還想在viewWillAppear中隱藏/顯示父級導航控制器,也可以使用上述代碼的組合。其中一些依賴於您現在和將來選擇的視圖層次結構。
不錯,但它也隱藏父導航欄中的後退按鈕。所以在這個解決方案中缺少一些東西:) – gbread
更新答案讓你更加自由。可能需要使用不同的組合,並且可能需要故事板更改,或者可能會降低應用程序的開銷。 – agibson007
欣賞你回到此並測試和標記正確。可能爲什麼我三年沒有回答很多問題。 :) – agibson007