当视图控制器从 nib 文件加载时,以模态方式在当前上下文中呈现视图控制器
Posted
技术标签:
【中文标题】当视图控制器从 nib 文件加载时,以模态方式在当前上下文中呈现视图控制器【英文标题】:Present a view controller modally over current context when the view controller gets load from a nib file 【发布时间】:2019-10-25 15:37:51 【问题描述】:我需要展示从 xib 文件加载的视图控制器 B,而不是从情节提要加载的现有视图控制器 A。
如果我从情节提要加载视图控制器 B,它可以正常工作,并且会在视图控制器 A 的当前上下文中呈现,但如果我从 nib 文件加载它,它不会在当前上下文中呈现。
从笔尖加载:
let vc = ViewControllerB()
vc.modalTransitionStyle = .crossDissolve
vc.modalPresentationStyle = .overCurrentContext
present(vc, animated: true, completion: nil)
从故事板加载:
let vc: ViewControllerB = ViewControllerB.instantiate()
let navigationController = UINavigationController(rootViewController: vc)
navigationController.setNavigationBarHidden(true, animated: false)
navigationController.modalPresentationStyle = .overCurrentContext
(tabBarController as? TabBarController)?.present(navigationController, animated: true, completion: nil)
TabBarController 是我的自定义控制器。
如果我从 xib 文件加载它,视图控制器 B 完全呈现在视图控制器 A 的顶部,因此呈现样式不会超出当前上下文,我希望仍能看到下面的视图或视图控制器 A。有很多相关帖子在这里,但没有一个是指在当前视图控制器上下文中呈现由 xib 文件制作的视图控制器。
【问题讨论】:
【参考方案1】:通过情节提要或 nib 文件加载视图对于在当前上下文中以模态方式呈现视图没有任何区别,在我的情况下,我将父控制器的背景颜色更改为在子控制器的顶部可见。
【讨论】:
以上是关于当视图控制器从 nib 文件加载时,以模态方式在当前上下文中呈现视图控制器的主要内容,如果未能解决你的问题,请参考以下文章