是否可以声明像lambda函数那样的UIAlert的OK按钮会做什么?

时间:2013-04-28 18:51:31

标签: ios objective-c uialertview objective-c-blocks

在不同操作的控制器中,我需要用“OK”和“CANCEL”按钮显示UIAlertView,并且每个“OK”点击这5个UIAlertView需要做不同的事情。是否可以声明lambda函数之类的东西来指定每个UIAlertView的“OK”按钮? (在5个地方的代码中我有不同的问题,消息和操作就ok了,有些根本没有输入文本)

   UIAlertView *alert = [[UIAlertView alloc]
                          initWithTitle:@"Apply"
                          message:@"Are you sure you want to apply ?"
                          delegate:self
                          cancelButtonTitle:@"CANCEL"
                          otherButtonTitles:@"OK",
                          nil];
    alert.alertViewStyle = UIAlertViewStylePlainTextInput;
    [alert show];

(目前我记得导致UIAlertView显示的动作然后根据动作做了不同的事情,但是代码不清楚。

3 个答案:

答案 0 :(得分:1)

使用名为UIKitCategoryAdditions的类别,该类别为选择或取消操作实现基于块的UIAlertViewUIActionSheet

这使得为多个用户提示分配操作变得非常简单,而无需实现委托方法并处理在同一控制器中处理多个对象的委托响应。

答案 1 :(得分:1)

这是可能的,但通过扩展现有的控制。我建议使用RIButtonItem,我在最近的几个项目中自己使用它。

答案 2 :(得分:-1)

使用objective-c块代替您的代表。

delegate: ^(UIAlertView * alertView, NSInteger buttonIndex) { doSomethingHere; };