我如何检查另一个视图控制器是否可见?

How do i check if another view controller is visible?

有时,当两个 UIAlertViews 试图同时显示时,我的应用程序会崩溃。如何在显示另一个 UIAlertview 之前检查是否正在显示另一个?

这是我试过的方法,但它不起作用。

注意:我正在为这个项目使用 swift。

if ViewController.isVisable == false {    
    self.presentViewController(AlertView, animated: true, completion: nil)    
}

你不应该这样处理问题。相反,当显示/隐藏视图控制器视图时,应启用/禁用触发要显示的警报的任何内容。未显示的视图控制器通常不应通过继续跟踪状态并尝试更新 UI(在其自己的视图中或使用警报)来消耗资源。

有时显然会有例外,但这应该是您的基线位置,并且会避免同时出现多个警报视图(或至少出于相同的原因/触发器)之类的问题。

作为对您问题的严格答复,您可以检查 ViewController 的观点是否有他的 window:

if ViewController.view.window != nil {

}

无论如何,我鼓励您采纳@Wain 的建议。