UIAlertView没有任何按钮

时间:2011-09-20 14:04:19

标签: objective-c iphone uialertview

我想知道以下代码是否合适。我试图从“timedAlert”方法2秒后(并且没有alertView中的任何按钮)自动关闭alertView。

    //this is in another method  
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:@"Login successful." delegate:self cancelButtonTitle:nil otherButtonTitles:nil];
    [alert show];
    [alert release];
    [self timedAlert];
}

-(void)timedAlert
{
    [self performSelector:@selector(dismissAlert:) withObject:alert afterDelay:2];
}

-(void)dismissAlert:(UIAlertView *) alertView
{
    [alertView dismissWithClickedButtonIndex:nil animated:YES];
}

如果alertView的cancelButton设置为“nil”,那么“[alertView dismissWithClickedButtonIndex:0 animated:YES];”事情工作???我尝试将cancelButton设为“nil”并且它有效,但无法弄清楚如何......

P.S:我从另一个

调用timedAlert方法

任何帮助表示赞赏!谢谢!

2 个答案:

答案 0 :(得分:4)

首先让我说如果您使用自定义视图处理此问题会更好,但是说这个问题看起来似乎是

[alert release];

你在完成之前释放了对象(我很惊讶它没有崩溃)。

做这样的事情

// other code
alert = [[UIAlertView alloc] initWithTitle:nil message:@"Login successful." delegate:self cancelButtonTitle:nil otherButtonTitles:nil];
    [alert show];
    [self performSelector:@selector(dismissAlert:) withObject:alert afterDelay:3.0f];
}

-(void)dismissAlert:(UIAlertView *) alertView
{
    [alertView dismissWithClickedButtonIndex:nil animated:YES];
    [alertView release];
}

答案 1 :(得分:1)

您的代码应该可以运行,您应该没有问题。我在以前的一个应用程序中完成了此操作。该按钮不显示,因为标题为零,但我认为该按钮的实例仍然存在。在关闭警报之前设置断点并查看警报变量,并检查是否有按钮数组或其他内容,应该告诉您它是如何工作的。