【发布时间】:2017-01-24 10:39:33
【问题描述】:
我有两个视图控制器 oneVC.swift 和 twoVC.swift。 我想将 oneVC.swift 上的 twoVC.swift 显示为覆盖,将 twoVC.swift 的背景颜色显示为透明。见附件。
我正在尝试使用以下代码:
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let homeVC = storyboard.instantiateViewController(withIdentifier: "twoVC") as! twoVC
homeVC.providesPresentationContextTransitionStyle = true;
homeVC.definesPresentationContext = true;
homeVC.modalPresentationStyle = .overCurrentContext
self.navigationController!.present(homeVC, animated: false, completion: nil)
这段代码运行良好 但是当前代码的问题是我不能进一步从 twoVC.swift 推送任何新控制器,因为这是通过 oneVC.swift 呈现的。 如果我使用
pushViewController
像这样:
self.navigationController?.pushViewController(homeVC, animated: false)
使用它我无法实现 twoVC.swift 的透明度。 那么有没有可能我可以使用透明度将第二个视图控制器推到第一个视图控制器上
pushViewController
提前致谢。
【问题讨论】:
-
您是否考虑过使用
UIView并将其覆盖在一个VC 上?可以单独创建一个.xib,按照自己的意愿进行设计,然后使用UIView.transition的方法来模拟UIViewController的推送动画效果。覆盖 VC 通常不是实现您所追求的目标的方法。 -
使用委托通知 oneVC 用户在 twoVC 上做了某事。
-
您必须在 twoVC 之前使用一个导航控制器,将其连接到 twoVC 并为其提供故事板标识符,按照正常代码显示该导航控制器。因此,您现在可以从该导航控制器推送到其他视图控制器。
-
问题出在 self.navigationController!.present(homeVC, animated: false, completion: nil)
标签: ios popover pushviewcontroller