在我的警报视图中,有两个按钮,确定和取消。当用户单击“确定”按钮时,将调用委托方法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];
有可能吗?
答案 0 :(得分:2)
不幸的是,目前这是不可能的(iOS 5.1)。 AlertView类不支持块。
答案 1 :(得分:1)
我制作了一对UIAlertView
和UIActionSheet
子类。抓住他们:
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