我有这段代码:
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if(buttonIndex == 0)
{
}
else if(buttonIndex == 1)
{
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Danger"
message:@"war"
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alertView show];
[alertView release];
}
}
但是每次我推出这个UIAlert它都会返回这个委托方法;我怎么能解决这个问题?我可以使用BOOL进行控制吗?
答案 0 :(得分:3)
将第二个alertView
的代理设置为nil。
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Danger"
message:@"war"
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
但是,如果您希望将来向第二个选项添加选项,则可以将tag
值设置为alertView
并检查委托方法的调用标记。根据{{1}}值,您将执行不同的任务。
答案 1 :(得分:1)
您可以将altertView的tag
属性设置为1,如此
alertView.tag = 1;
并将您的代码更改为:
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if ([alertView tag] != 1) {
if(buttonIndex == 0)
{
}
else if(buttonIndex == 1)
{
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Danger"
message:@"war"
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
alertView.tag = 1;
[alertView show];
[alertView release];
}
}
}
您还可以更改警报视图的委托。
答案 2 :(得分:0)
你无法阻止它,除非你设置了delegate
属性nil
。
使用如下
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if(buttonIndex == 0)
{
}
else if(buttonIndex == 1)
{
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Danger"
message:@"war"
delegate:nil cancelButtonTitle:@"OK"
otherButtonTitles:nil];
alertView.tag = 1;
[alertView show];
[alertView release];
}
}