目前,我创建了一个自定义弹出窗口a,然后当按下其中的一个按钮时,关闭它,并在完成处理程序中创建一个新的弹出窗口B。
这两个弹出窗口的相似之处在于,它们使用黑色视图,将alpha设置为一个值,以模拟标准警报提供的灰显屏幕效果。
但是,在创建B之前取消A会导致闪烁。我想先创建B,然后再放弃A,但还没有找到一个好方法。
如何做到这一点,避免闪烁的想法?
let storyBoard = UIStoryboard(name: "MenuStoryboard", bundle: nil)
let aPopup = storyBoard.instantiateViewController(withIdentifier: "Popup_A")
present(aPopup, animated: false, completion: nil)
self.dismiss(animated: false) {
let storyBoard = UIStoryboard(name: "MenuStoryboard", bundle: nil)
let bPopup = storyBoard.instantiateViewController(withIdentifier: "PopUp_B")
if let topViewController = UIApplication.shared.topMostViewController {
topViewController.present(bPopup, animated: false, completion: nil)
}
}
extension UIViewController {
var topMostViewController : UIViewController {
if let presented = self.presentedViewController {
return presented.topMostViewController
}
if let navigation = self as? UINavigationController {
return navigation.visibleViewController?.topMostViewController ?? navigation
}
if let tab = self as? UITabBarController {
return tab.selectedViewController?.topMostViewController ?? tab
}
return self
}
}
extension UIApplication {
var topMostViewController : UIViewController? {
return self.keyWindow?.rootViewController?.topMostViewController
}
}