13

我需要有关以编程方式关闭 UIAlertView 的帮助。目前我有这个

UIAlertView *alert1 = [[UIAlertView alloc]initWithTitle:@"title" message:@"message" delegate:nil cancelButtonTitle:nil otherButtonTitles:nil];

然后后来我称之为

[alert1 dismissWithClickedButtonIndex:0 animated:NO];

但什么也没发生。

4

5 回答 5

35

你需要设置两件事。

1.包括你的.h文件: <UIAlertViewDelegate>

2.请按照下面的实现...

   UIAlertView *alert1 = [[UIAlertView alloc]initWithTitle:@"title" message:@"message" delegate:nil cancelButtonTitle:nil otherButtonTitles:nil]; 
        [alert1 show];
        [self performSelector:@selector(dismiss:) withObject:alert1 afterDelay:1.0];

解雇方法将是......

-(void)dismiss:(UIAlertView*)alert
{
    [alert dismissWithClickedButtonIndex:0 animated:YES];
}

我希望这能帮到您。

于 2012-09-14T06:15:17.500 回答
5

我也遇到了这个问题。就我而言,出于某种原因,请致电:

[alert dismissWithClickedButtonIndex:0 animated:NO];

并不总是有效(是的,甚至在 UI 线程上调用它,是的,警报!= nil),而是简单地将动画标志设置为 YES 它有效:

[alert dismissWithClickedButtonIndex:0 animated:YES];

可能是苹果的bug...

于 2015-07-22T09:22:38.750 回答
3

你应该先显示它:

UIAlertView *alert1 = [[UIAlertView alloc]initWithTitle:@"title" message:@"message" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:nil];
    [alert1 show];

然后在委托方法中

- (void)alertView:(UIAlertView *)alertView willDismissWithButtonIndex:(NSInteger)buttonIndex{
    if(buttonIndex==0){
     // do something
    }
}
于 2012-09-14T01:06:38.130 回答
0

您调用的方法是正确的。
我猜当您调用方法 dismissWithClickedButtonIndex:animated: 时,alert1 为 nil:
尝试检查您的变量 alert1。

于 2012-09-14T01:11:44.217 回答
0

您可以使用委托方法-alertView:didDismissWithButtonIndex:代替 - 一旦从屏幕上删除警报视图,它就会被调用,或者更好的方法是,使用后台线程,例如-performSelectorInBackground:withObject:来处理您需要的任何处理去做。

于 2012-09-14T06:50:37.590 回答