我想知道以下代码是否合适。我试图从“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方法任何帮助表示赞赏!谢谢!
答案 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)
您的代码应该可以运行,您应该没有问题。我在以前的一个应用程序中完成了此操作。该按钮不显示,因为标题为零,但我认为该按钮的实例仍然存在。在关闭警报之前设置断点并查看警报变量,并检查是否有按钮数组或其他内容,应该告诉您它是如何工作的。