在AlertView OK按钮声明中执行一段代码

时间:2012-06-08 05:58:53

标签: iphone objective-c ios uialertview

在我的警报视图中,有两个按钮,确定和取消。当用户单击“确定”按钮时,将调用委托方法dismissWithClickedButtonIndex:animated,如果索引为0,则会调用一个方法来执行某些代码:

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Alert" 
                                                    message:@"Are you sure you want to exit"
                                                   delegate:self cancelButtonTitle: @"OK" 

                                          otherButtonTitles: @"Cancel",nil]; 


    [alert show]; 
    [alert release];//release the reference 

委托方法:

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

    if (buttonIndex==0) {
        [self aMethod];
    }    
}

-(void)aMethod{

//Some useful code
}

现在,我想要的不是所有这些,而是​​直接在AlertView中执行aMethod方法的代码,而不需要引用一个委托方法和一个被调用的方法,如下所示: / p>

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Alert" 
                                                message:@"Are you sure you want to exit"
                                               delegate:self cancelButtonTitle: @"OK" //Put here some useful code

                                      otherButtonTitles: @"Cancel",nil]; 

有可能吗?

2 个答案:

答案 0 :(得分:2)

不幸的是,目前这是不可能的(iOS 5.1)。 AlertView类不支持块。

答案 1 :(得分:1)

我制作了一对UIAlertViewUIActionSheet子类。抓住他们: https://github.com/rydermackay/RMActionSheet

像这样使用它们:

RMAlertView *alertView = [RMAlertView alertViewWithTitle:@"Alert!" message:nil];

[alertView addButtonWithTitle:@"OK"
                       action:^{
                           NSLog(@"OK");
                       }];

[alertView addCancelButtonWithTitle:@"Cancel"
                             action:nil];
[alertView show];

修改

从你的评论中听起来你不熟悉积木。立即阅读。认真。 http://developer.apple.com/library/ios/#documentation/cocoa/Conceptual/Blocks/Articles/00_Introduction.html

这也很好: http://www.mikeash.com/pyblog/friday-qa-2009-08-14-practical-blocks.html