如何保持导航栏消失与MSMessagesViewController – > UIContainerView – > UINavigationController – > UITableViewController?
我试图在iMessage应用程序(iOS 10)中放置一个带有表视图控制器的导航控制器。 当我将UINavigationController
放在UIContainerView
中的UIContainerView
时,这似乎工作。
但是,在展开视图中,这会中断。 控制器已经消失的UINavigationBar
。
我该如何补救,或者我采取了错误的做法?
让我开始假设您使用view.addSubview
将您的UITableViewController
添加到view.addSubview
为了正确显示导航栏。 确保您已正确设置所有约束。 这里是我的例子,希望这会对你有用:
//embedded新的控制器。 在WWDC中展示VC的推荐方式(icecream示例)。 丑,但做的工作 addChildViewController(控制器) view.addSubview(controller.view) 让viewRect = view.bounds controller.view.frame = viewRect controller.view.translatesAutoresizingMaskIntoConstraints = false controller.view.leftAnchor.constraint(equalTo:view.leftAnchor).isActive = true controller.view.rightAnchor.constraint(equalTo:view.rightAnchor).isActive = true controller.view.topAnchor.constraint(equalTo:topLayoutGuide.bottomAnchor).isActive = true 如果presentationStyle == .compact { controller.view.bottomAnchor.constraint(equalTo:view.bottomAnchor).isActive = true } else { controller.view.bottomAnchor.constraint(equalTo:bottomLayoutGuide.topAnchor).isActive = true } controller.didMove(toParentViewController:self)
这里是苹果开发者论坛上的post的链接,它解决了我的问题: https : //forums.developer.apple.com/thread/52049
在显示的屏幕上,导航栏没有任何问题!
所以在我的情况下,我正在使用故事板,所以我会添加故事板的解决scheme。
与DLee的答案类似,顶部约束条件需要设置为“顶部布局指南”而不是“顶部”。 以下是故事板中的样子:
在我的情况下,我使用Container View来容纳所有东西,因此,将顶层布局指南设置为顶层约束条件,使得所有的东西都放在正确的位置。
在我的文章中,我最初使用了“顶部”,这是导致iMessage应用程序(特别是导航栏)部分消失的原因。