Swift:从现有的导航控制器(如 Facebook 或 Snapchat)推送新的导航控制器

Swift: push new navigation controller from an existing navigation controller (like Facebook or Snapchat)

如何从现有的导航控制器推送新的导航控制器,如下图所示的 Facebook 即时文章所做的那样?

在这种情况下,您是否必须创建一个包含主导航控制器的视图控制器架构,该主导航控制器带有半透明导航栏,同时包裹 Facebook 选项卡栏/导航控制器和即时文章导航控制器?

Facebook instant article

编辑:添加了Snapchat示例

您是否在考虑不同的 UINavigationBar 而不是 UINavigationController?我认为您已经可以为不同的 UIViewController 更改栏外观...如果它是一个问题,那么您可以为 UINavigationController 制作一个 class 并在其中添加功能以更改外观UIViewController 被查看的栏目。

UINavigationController 的委托方法为您提供了类似

的方法
func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool)

在里面你可以像

一样打勾
if viewController.isKind(of: SomeViewController.self) {
   //make this specific change for it 
} else if viewController.isKind(of: SomeOtherViewController.self) {
   //make this specific change for this other viewController
} else {
   //make this for all other
}