我有一个UIViewController
,它嵌入在UINavigationController
中。在该视图控制器中,我有一个UIButton
,它显示一个弹出视图,这是另一个UIViewController
(pVC)。它是通过设置为segue
的{{1}}来实现的。在弹出窗口中我只有一个showModally
。
现在,我将pVC的背景颜色设置为清除,因此当点击按钮时,它会产生效果,就像只显示pVC内部的视图一样。
问题是,当我将pVC的背景颜色设置为UIView
并点击按钮时,pVC会在我当前clear
之上显示,但一秒后,背景变为黑色。这是它的样子:
在view controller
中,我发现这是一个变成黑色的View Hierarchy Debugger
图层。我想知道,也许这是因为我之前的UIWindow
嵌入了view controller
?当我尝试用两个UINavigationController
做同样的事情时,其中没有一个嵌入到任何内容中,它可以正常工作。
如果您知道发生这种情况的确切原因和/或如何解决问题,我将非常感谢您的帮助。
答案 0 :(得分:2)
尝试在当前上下文中显示模态pVC
,这样做:
演示文稿完成后,视图层次结构中的视图不会被删除。 因此,如果呈现的视图控制器没有用不透明的内容填充屏幕,则底层内容会显示出来。
答案 1 :(得分:1)
将弹出视图的背景颜色改为透明,并按照这样做
同时将此代码添加到viewController,通过在带有/不带动画的故事板中选择模态来向您呈现弹出并更改segue的名称
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if(segue.identifier == "showLogout")
{
let newVC = segue.destination;
self.setPresentationStyleForSelfController(selfController: self,presentingController: newVC)
}
}
func setPresentationStyleForSelfController(selfController:UIViewController,presentingController:UIViewController)
{
if #available(iOS 8.0, *)
{
//iOS 8.0 and above
presentingController.providesPresentationContextTransitionStyle = true;
presentingController.definesPresentationContext = true;
presentingController.modalPresentationStyle = UIModalPresentationStyle.overCurrentContext
}
else
{
presentingController.modalPresentationStyle = UIModalPresentationStyle.currentContext
selfController.navigationController?.modalPresentationStyle = UIModalPresentationStyle.currentContext
}
}