错误在AlertView iPhone上?
-
20-08-2019 - |
题
我写了一段代码 “做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上的过程中的第一部分中的警报。