Swift 在UITableViewController上以模式显示UIPageViewController时,导航栏和工具栏上的图形人工制品

Swift 在UITableViewController上以模式显示UIPageViewController时,导航栏和工具栏上的图形人工制品,swift,cocoa-touch,uinavigationcontroller,uinavigationbar,uitoolbar,Swift,Cocoa Touch,Uinavigationcontroller,Uinavigationbar,Uitoolbar,我的应用程序只是嵌入在UINavigationController中的UITableViewController。在主tableview控制器viewDidLoad()方法中,我检查UserDefaults中的布尔键,查看它是否是第一次启动。如果是这样,我会为教程和入门介绍一个UIPageViewController self.present(tutorialViewController, animated: true, completion: nil) 但是,在教程屏幕下,我的主视图控制器的

我的应用程序只是嵌入在
UINavigationController
中的
UITableViewController
。在主tableview控制器
viewDidLoad()
方法中,我检查
UserDefaults
中的布尔键,查看它是否是第一次启动。如果是这样,我会为教程和入门介绍一个
UIPageViewController

self.present(tutorialViewController, animated: true, completion: nil)
但是,在教程屏幕下,我的主视图控制器的
导航栏
工具栏
变为浅灰色,直到与tableview交互,然后它们立即变回我想要的默认半透明外观。我不知道是什么原因造成的。我尝试将
modalPresentationStyle
设置为
.overCurrentContext
,但这没有帮助

我还收到一条警告,不建议在分离的视图控制器上显示视图控制器。如果我按以下方式呈现,则此警告将消失:

self.parent?.present(tutorialViewController, animated: true, completion: nil)
然而,这看起来很混乱,图形化的人工制品仍然存在


我是否从错误的位置或以错误的方式演示了
tutorialViewController
?教程屏幕似乎如预期的那样工作——只是底层导航栏和工具栏的颜色有点不对劲。我需要在tableview上演示它,因为教程的最后一页是透明的,带有模糊效果,以帮助了解应用程序的工作原理。

我根据一些讨论找到了解决方案

当我应该在
viewdispect()
中演示模态视图控制器时,我是从
viewdispect()方法演示的

我还制作了淡入的tableview动画,因此在教程屏幕之前它是不可见的。相反,我现在使用的是与教程视图控制器设置为相同背景颜色的块视图。在
viewDidLoad()
中,我执行以下操作:

let blockingView = UIView()
blockingView.frame = UIApplication.shared.keyWindow?.frame
UIApplication.shared.keyWindow?.addSubview(blockingView)
这意味着阻塞视图出现在导航控制器的前面。在
viewdideappease()
中演示教程之前,我会淡入淡出并删除
blockingView