在我的应用中,我正在通过自定义相机捕获图像。因此,在捕获图像时,我正在呈现控制器,因此它在中心显示相机,看起来就像捕获图像。在这里,它的代码
let layerVC = cameraLayerViewController(nibName: "cameraLayerViewController", bundle: nil)
layerVC.modalPresentationStyle = .custom
Global.appDelegate.window?.rootViewController?.presentedViewController?.present(layerVC, animated: false, completion: nil)
DispatchQueue.main.asyncAfter(deadline: .now() + 0.4, execute: {
layerVC.dismiss(animated: false, completion: nil)
}
但是,当更改相机模式时,我在同一控制器上介绍另一个控制器
if (UserDefaults.standard.value(forKey: Global.g_UserDefaultKey.isFrontCamera) as? Bool == true)
{
UserDefaults.standard.set(false, forKey: Global.g_UserDefaultKey.isFrontCamera)
let controller : CameraVC = CameraVC(nibName: "CameraVC", bundle: nil)
self.present(controller, animated: false, completion: nil)
}
else
{
UserDefaults.standard.set(true, forKey: Global.g_UserDefaultKey.isFrontCamera)
let controller : CameraVC = CameraVC(nibName: "CameraVC", bundle: nil)
self.present(controller, animated: false, completion: nil)
}
现在,当在此控制器上,我试图显示任何控制器无法正常工作。
let layerVC = cameraLayerViewController(nibName: "cameraLayerViewController", bundle: nil)
layerVC.modalPresentationStyle = .custom
Global.appDelegate.window?.rootViewController?.presentedViewController?.present(layerVC, animated: false, completion: nil)
DispatchQueue.main.asyncAfter(deadline: .now() + 0.4, execute: {
layerVC.dismiss(animated: false, completion: nil)
}
所以让我知道如何在已经呈现的控制器上介绍控制器。
从根中呈现第一个视图控制器:
let root = UIApplication.shared.keyWindow!.rootViewController!
let firstPresented = FirstViewController()
firstPresented.transitioningDelegate = yourPresentationDelegate
firstPresented.modalPresentationStyle = .custom
root.present(firstPresented, animated: false, completion: nil)
到 present
第二视图控制器,您不能再次从根中 present
,因为它已经存在,因此您必须从当前呈现的内容(即self
(中进行present
:
let secondPresented = SecondViewController()
secondPresented.transitioningDelegate = yourPresentationDelegate
secondPresented.modalPresentationStyle = .custom
self.present(secondPresented, animated: false, completion: nil)