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

nac*_*n f 4 uialertview ios swift uialertcontroller

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

这是我尝试过的,但它不起作用.

注意:我正在使用swift进行这个项目.

if ViewController.isVisable == false {    
    self.presentViewController(AlertView, animated: true, completion: nil)    
}
Run Code Online (Sandbox Code Playgroud)

Mat*_*mbo 13

作为对您的问题的严格回答,您可以检查ViewController视图是否有他的窗口:

if ViewController.view.window != nil {

}
Run Code Online (Sandbox Code Playgroud)

无论如何,我鼓励你接受@Wain的建议.


Wai*_*ain 6

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

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