首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIAlertView在UIAlertView委托中单击事件

UIAlertView在UIAlertView委托中单击事件
EN

Stack Overflow用户
提问于 2012-07-10 08:32:05
回答 4查看 17.3K关注 0票数 7

我是iPhone开发人员的新手,

我想一个接一个地实现两个警报视图,比如当用户按下删除按钮时,第一个警报视图会问Are you sure want to Delete ?有两个按钮yesno

现在,如果用户按下yes,那么第二个警告视图将伴随消息Deleted Successfully ! --这个警告视图只包含OK按钮,现在单击这个OK按钮,我想调用一个方法。

如果用户按下No,那么什么都不应该发生,警报应该被忽略。

这是我的代码片段,

代码语言:javascript
复制
-(void)DeletebtnCliked:(id)sender
{   
    UIAlertView* alertView = [[UIAlertView alloc] initWithTitle:@"Are you sure want to delete ?"
                                                        message:nil delegate:self 
                                              cancelButtonTitle:nil
                                              otherButtonTitles:@"Yes",@"No",nil];
    [alertView show];
    [alertView release];   
}

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{ 
    if (buttonIndex == 0)
    {            
         UIAlertView* alertew = [[UIAlertView alloc] initWithTitle:@"Deleted Successfully !"
                                                           message:nil delegate:self 
                                                 cancelButtonTitle:@"OK"
                                                 otherButtonTitles:nil];
        [alertew show];
        [alertew release];

        if (buttonIndex == 0)
        {
            [self MethodCall];
        }
    }
    else if (buttonIndex == 1)
    {
        [alertView dismissWithClickedButtonIndex:1 animated:TRUE];
    } 
}

写完这段代码后,我就在无限循环中了。

任何帮助都将不胜感激.

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-07-10 08:34:21

代码语言:javascript
复制
alertView.tag = 1;
alertew.tag = 2;

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    if (alertView.tag == 2)
    {
        //Do something
    }
    else
    {
        //Do something else
    }
}
票数 11
EN

Stack Overflow用户

发布于 2012-07-10 08:41:42

将第二个警报视图的委托设置为零:

代码语言:javascript
复制
UIAlertView* alertew = [[UIAlertView alloc] initWithTitle:@"Deleted Successfully !"
                                                            message:nil delegate:nil 
                                                  cancelButtonTitle:@"OK" otherButtonTitles:nil];
票数 4
EN

Stack Overflow用户

发布于 2012-07-10 08:53:15

或者使用标记来处理类似于下面这样的情况,或者只是为内部的alertView设置Delegate,这是在委托方法中的,这样它就不会调用。

代码语言:javascript
复制
-(void)DeletebtnCliked:(id)sender
{   
    UIAlertView* alertView = [[UIAlertView alloc] initWithTitle:@"Are you sure want to delete ?"
                                                    message:nil delegate:self 
                                          cancelButtonTitle:nil
                                          otherButtonTitles:@"Yes",@"No",nil];
alertView.tag = 1;
[alertView show];
[alertView release];   
}

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{ 
if (buttonIndex == 0 && alertView.tag == 1)
{            
     UIAlertView* innerAlert = [[UIAlertView alloc] initWithTitle:@"Deleted Successfully !"
                                                       message:nil delegate:nil 
                                             cancelButtonTitle:@"OK"
                                             otherButtonTitles:nil];
    innerAlert.tag = 2;
    [innerAlert show];
    [innerAlert release];

    if (buttonIndex == 0 && alertView.tag == 1)
    {
        [self MethodCall];
    }
}
else if (buttonIndex == 1 && alertView.tag == 1)
{
    [alertView dismissWithClickedButtonIndex:1 animated:TRUE];
} 
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11409454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档