步骤:将导航控制器嵌入到主程序的入口点控制器(ViewController.swift)中。
func addChildController(childController : UIViewController) {
let navigation = UINavigationController.init(rootViewController: childController)
navigation.view.frame = self.view.frame
navigation.willMove(toParent: self)
self.addChild(navigation)
navigation.beginAppearanceTransition(true, animated: true)
self.view.addSubview(navigation.view)
navigation.endAppearanceTransition()
navigation.didMove(toParent: self)
}
结果:在导航条和导航控制器之间出现了额外的空间。 - 在导航栏和下面的用户界面之间有额外的空间,这与视图控制器的安全区域相联系。
如果你已经在导航控制器中嵌入了你的视图控制器,你应该为你的子视图控制器使用同样的方法。
在你的案例中,你已经通过storyboard添加了一个导航控制器,然后在 func addChildController(childController : UIViewController) {
你又增加了一个新的导航控制器。
我认为与其使用这个 addChildController()
你应该用它来推送下一个视图控制器。
extension UIViewController {
func pushVC(vcName : String) {
let vc = UIStoryboard.init(name: "Main", bundle: Bundle.main).instantiateViewController(withIdentifier: vcName)
self.navigationController?.pushViewController(vc, animated: true)
}
}