我写了一段代码 “做something->显示alert1-> DO something->显示警报2”。


    //do something
    UIAlertView *alert = [[UIAlertView alloc] 
                          initWithTitle:@"Alert 1" 
                          message:nil 
                          delegate:nil 
                          cancelButtonTitle:@"OK" 
                          otherButtonTitles:nil];
    [alert show];
    [alert release];
    //do something  
    UIAlertView *alert2 = [[UIAlertView alloc] 
                           initWithTitle:@"Alert 2" 
                           message:nil 
                           delegate:nil 
                           cancelButtonTitle:@"OK" 
                           otherButtonTitles:nil];
    [alert2 show];
    [alert2 release];

突然,一个奇怪的事情发生在多个AlertViews:它显示了“警报1” - >“警报2”(按“确定”) - >“警报1”。为什么“警报1”再次说明?我没有写任何委托方法呢。也许一个错误?(感谢cobbal,alert1的是仍然存在警报2出现时。)

我觉得 - (空)alertView:(UIAlertView中*)alertView clickedButtonAtIndex:(NSInteger的)buttonIndex效果很好。是委托方法显示多个alertViews一种常见的方式?

有帮助吗?

解决方案

我猜想,警报1中所示,然后通过警报2覆盖,因为节目不是模态。当警报2关闭时,警报1仍然是开放的。

要你的第二个问题,alertView:didDismissWithButtonIndex:可以更好地工作,但我并没有实际测试过。

其他提示

的委托是,这样就可以当驳回警报通知,并且该按钮被用来将其关闭。这不会影响该警报是否在所有被解雇。

,直到它被驳回或者敲击按钮,警报将保持您能看到。(如果有的话 - 不要求的话),或者你打电话或者[UIAlertView dismissWithClickedButtonIndex:animated]或警报实例的(无证)dismiss方法

它看起来像(如Cobbal建议),警报2在警报1雨后春笋般冒出来,您关闭警报2,警报1仍存在(直到它本身就是解雇)。

有没有你要显示一个新的警报,而另一名仍然呈现出特别的原因?也许一些更多的背景将有助于我们获取到问题的根源,我怀疑可能是一个设计问题。

[编辑]回来这一点,再次阅读,我不知道你问有关与委托方法的是你是否应该显示从那里警报2?在这种情况下,这可能是你想要的东西 - 无论是直接还是间接的。通过间接地我的意思是,你可能有(或导致它的情况下),一些州的其他地方设置决定警报2是否应该显示。该州(旗,也许)可以当你告诉第一警报时,警报被驳回(从委托方式)设置,并清除。

发生这种情况的原因是因为UIAlertView中不会阻塞,而它的表示。表示示出了警报之后的alertview将直运行之后写入的任何代码。

你应该拥有的是两种不同的方法。一个没有的东西,然后示出了一个警报,然后另一种做一些事情,显示了另一警报。

齐齐做一些事情,并显示一个警告,然后挂接到警报的委托方法第一种方法,当你从alertview回调,运行的其他方法。

此方式,将不会发生的过程的第二部分,直到用户按下OK上的过程中的第一部分中的警报。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top