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

4
有时候我的应用程序会在两个`UIAlertViews`同时尝试显示时崩溃。我该如何检查是否正在显示另一个`UIAlertview`,然后再显示另一个?
以下是我尝试过的方法,但并没有起作用。
注意:我在这个项目中使用的是Swift语言。
if ViewController.isVisable == false {    
    self.presentViewController(AlertView, animated: true, completion: nil)    
}
2个回答

14

为了严格回答你的问题,你可以检查ViewController的视图是否拥有它的窗口:

if ViewController.view.window != nil {

}

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


6

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

当然,有时候会有例外情况,但这应该是您的基本立场,可以避免出现多个警报视图同时出现(或至少是由于同一原因/触发器)的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接