2014-09-01 26 views
0

我已在自定义类中实施UIAlertview类别。我从我的uitableviewcontroller调用该方法以显示警报。但在iPhone 4设备上的iOS7中,该警报视图多次出现,同时快速点击可用视图单元。在iOS7中以编程方式关闭uialertview

我想通过使用下面的代码打开alertview,如果它已被打开。

for (UIWindow* w in [UIApplication sharedApplication].windows) 
    for (NSObject* o in w.subviews) 
     if ([o isKindOfClass:[UIAlertView class]]) 
      [(UIAlertView*)o dismissWithClickedButtonIndex:[(UIAlertView*)o cancelButtonIndex] animated:YES]; 

但是这段代码不适用于iOS 7.我不确定我遵循的方式是否正确。

你能帮我解决这个问题吗?

由于提前

+0

你可以给视图中的标签或它,因为它看起来像你想只是其中的情况下保持周围反正分配给属性。 – muffe 2014-09-01 15:24:49

+0

我使用的是一个包含显示警报的数组,并遍历整个数组以解除它们在viewWillDisappear – John 2014-09-01 15:38:08

+0

你几乎从不想通过子视图迭代并以这种方式混淆东西,你会遇到各种各样的问题。 – Mike 2014-09-01 15:55:03

回答

0

迭代通过[UIApplication sharedApplication].windows是一个坏主意。更好的概念是保存活动UIAlertView的参考,并在需要时将其忽略。

注: 利用UIAlertView财产isVisible,这表明AlertView是否显示的。

例子:

if (YES == alertViewInstance.isVisible) 
{ 
    //dismiss your alert view 
} 
+0

感谢您的回复..我试过isVisible属性也没用。它不适用于iOS7。 – 2014-09-02 08:13:41