博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
通过 objc_setAssociatedObject alert 和 button关联 及传值
阅读量:5964 次
发布时间:2019-06-19

本文共 1339 字,大约阅读时间需要 4 分钟。

原文地址

http://blog.csdn.net/lengshengren/article/details/16886915

 

//唯一静态变量key

static const char associatedkey;

static const char associatedButtonkey;

- (IBAction)sendAlert:(id)sender

{

    

    NSString *message =@"我知道你是按钮了";

    

    UIAlertView *alert = [[UIAlertViewalloc]initWithTitle:@"提示"message:@"我要传值·" delegate:selfcancelButtonTitle:@"确定" otherButtonTitles:nil];

    alert.delegate =self;

    [alert show];

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

     //objc_setAssociatedObject需要四个参数:源对象,关键字,关联的对象和一个关联策略。

     //1 源对象alert

    //2 关键字 唯一静态变量key associatedkey

    //3 关联的对象 sender

    //4 关键策略  OBJC_ASSOCIATION_RETAIN_NONATOMIC

    

    

    objc_setAssociatedObject(alert, &associatedkey, message,OBJC_ASSOCIATION_RETAIN_NONATOMIC);

    

    objc_setAssociatedObject(alert, &associatedButtonkey, sender,OBJC_ASSOCIATION_RETAIN_NONATOMIC);

    

}

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

{

    

    

    //通过 objc_getAssociatedObject获取关联对象

    NSString  *messageString =objc_getAssociatedObject(alertView, &associatedkey);

    

    

    UIButton *sender = objc_getAssociatedObject(alertView, &associatedButtonkey);

    

    _labebutton.text = [[sendertitleLabel]text];

    _ThisLabel.text = messageString;

    

    

    //使用函数objc_removeAssociatedObjects可以断开所有关联。通常情况下不建议使用这个函数,因为他会断开所有关联。只有在需要把对象恢复到“原始状态”的时候才会使用这个函数。

}

demo http://download.csdn.net/detail/lengshengren/6594365

 

转载于:https://www.cnblogs.com/xiaobaizhu/p/3994327.html

你可能感兴趣的文章
git忽略文件【转】
查看>>
Web上的支持的图片格式以及它们之间的区别
查看>>
随意而为
查看>>
jQuery监听文本框值改变触发事件(propertychange)
查看>>
Json——使用Json jar包实现Json字符串与Java对象或集合之间的互相转换
查看>>
HDU--2040
查看>>
zepto返回顶部动画
查看>>
CVBS视频信号解析
查看>>
必要时进行保护性拷贝
查看>>
Codeforces Round #356 (Div. 1) D. Bear and Chase 暴力
查看>>
甲骨文Java Archive
查看>>
查看数据库错误日志的位置
查看>>
电信网络拓扑图自动布局
查看>>
C#中List〈string〉和string[]数组之间的相互转换
查看>>
洛谷P1108 低价购买[DP | LIS方案数]
查看>>
通达信里的统计函数及区块背景函数
查看>>
redis主从配置<转>
查看>>
8 行 Node.js 代码实现代理服务器
查看>>
水印,图片验证码
查看>>
C#编程(七十六)----------使用指针实现基于栈的高性能数组
查看>>