1

当它们出现时,我有大约 4 个具有不同标准的警报视图。在所有 4 个视图中,右键应该总是做同样的事情。

我使用下面的代码来尝试说如果 buttonIndex == 1,做点什么。

目前,它仅适用于我的一个警报视图。其他人只是最终关闭警报视图并且从不运行 IF buttonIndex == 1 的代码。

任何想法,将不胜感激。

if (a==1) {
            NSString *message = [[NSString alloc] initWithFormat:
                             @"Only $%@!",dollas.text];

            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:
                              @"Really?!"

                                                        message:message
                                                       delegate:self
                                              cancelButtonTitle:@"Close"
                                              otherButtonTitles:@"Facebook",nil];
        [alert show];
        [alert release];
        [message release];

        }

else if (a==2) {
            NSString *message = [[NSString alloc] initWithFormat:
                                 @"Somone just paid you $%@", dollas.text];

            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:
                                  @"Swish!"

                                                            message:message
                                                           delegate:nil
                                                  cancelButtonTitle:@"Close"
                                                  otherButtonTitles:@"Facebook",nil];
            [alert show];
            [alert release];
            [message release];

        }

和代表:

- (void)alertView:(UIAlertView *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex {

    if (buttonIndex == 1)
    {
       do.stuff;
    }
4

3 回答 3

4

您应该将委托设置为,self以便调用该方法。

IE -

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:
                      @"Really?!"

                                                message:message
                                               delegate:self //SELF
                                      cancelButtonTitle:@"Close"
                                      otherButtonTitles:@"Facebook",nil];
于 2013-06-30T03:17:31.897 回答
2

在每个警报视图上设置标签,并在 -didDismissWithButtonIndex 内部首先检查警报标签

例如:

    if (a==1) {
        NSString *message = [[NSString alloc] initWithFormat:
                         @"Only $%@!",dollas.text];

        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:
                          @"Really?!"

                                                    message:message
                                                   delegate:self
                                          cancelButtonTitle:@"Close"
                                          otherButtonTitles:@"Facebook",nil];
    alert.tag = 1;
    [alert show];
    [alert release];
    [message release];

    }
    else if (a==2) {
        NSString *message = [[NSString alloc] initWithFormat:
                             @"Somone just paid you $%@", dollas.text];

        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:
                              @"Swish!"

                                                        message:message
                                                       delegate:nil
                                              cancelButtonTitle:@"Close"
                                              otherButtonTitles:@"Facebook",nil];
        alert.tag = 2;
        [alert show];
        [alert release];
        [message release];

    }

然后在 -didDismissWithButtonIndex

- (void)alertView:(UIAlertView *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex {

    if (buttonIndex == 1 && actionSheet.tag == 1)
    {
       do.stuff;
    }
    else if (buttonIndex == 1 && actionSheet.tag == 2)
    {
       do.otherStuff;
    }
于 2013-06-30T03:02:09.620 回答
2

对于这种情况(a == 2),您将UIAlertView委托设置为 nil,因此- (void)alertView:(UIAlertView *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex甚至不应该在这种情况下被调用。更改它以将委托设置为自我。

于 2013-06-30T03:10:03.480 回答