将参数传给UIAlertView的 Delegate

写代码的过程中遇到需要将参数传入到代理方法中去的情况,在网上搜索了一下,现在整理下可以用到的方法。

通常我们需要在下面的alertView代理方法中处理Button点击事件。

-(void)alertView:(UIAlertView*)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{}

如果此时想传入参数到这个方法中,然后再做相应的处理。

我们可以选用的方法有:

①如果需要传入的参数比较简单可以转化为整数类型,那么可以选择将这个参数置为alertView的tag。

②考虑将参数设为全局变量或成员变量。

③利用对象关联(associated objects)(此方法不推荐使用),具体做法如下:

首先,#import<objc/runtime.h>  头文件

设置关联:objc_setAssociatedObject来把一个对象与另外一个对象进行关联。

void objc_setAssociatedObject(id object,const void* key,id value,objc_AssociationPolicy policy);

四个参数:object :源对象(此处为alert对象)

                key     :关联的关键字

                value  :关联的对象

                policy :关联策略。

获取相关联的对象: objc_getAssociatedObject(用于在代理方法中获取对象)

id objc_getAssociatedObject(id object, void *key);

④扩展NSObject,加个userInfo。

推荐阅读更多精彩内容